dop2000's Forum Posts

  • [quote:1exxm20z]X axis indicates 'UID' of objects.

    So do you actually store UIDs in the array or do you use UID as an index for X axis?

    For example when you do Array Set At(5,0) to 99 - does it mean that UID of the 5th object's is 99, or does it mean that object with UID=5 has HP=99?

    If you use UID as X-index and don't actually store it in the array, then you can't sort it!

    If you do store UID in the array, you can swap columns 0 and 1 and sort, then swap them back.

    Here is a demo:

    https://www.dropbox.com/s/88wse8qyrr3ys ... .capx?dl=0

    For other methods, see this post:

    viewtopic.php?f=147&t=67745

    Also, why do you need this array anyway? In C2 many things you normally would do with arrays, can be done much easier without them!

    You can store all these values (HP, size etc) in instance variables. And then you can sort them any way you like using "System->For each (ordered)" and similar events.

  • So what exactly is your question? Do you need to identify which instance belongs to which group? You can do this with Object.Pin.PinnedUID expression, although it would be easier to use an instance variable like GroupID.

  • I googled this, looks like the biggest number in Construct is 9223372036854776000, which I think is less than 10^19, that's why last two events don't work.

    So you need to invent some other way to work with such big numbers.

    Maybe at some point in the game when the number of coins is already quite big (10^10 or so) and player doesn't care about hundreds and thousands, you can remove 6 last digits from the number and start counting in millions?

  • There are many ways to do this - you can use Bullet behavior, 8-Direction behavior, or simply change sprite position on every tick.

    However the best and easiest way to do this is with MoveTo addon, you can download it from this link:

    https://github.com/rexrainbow/C3RexDoc/tree/master/repo

  • Any advice? any tutorial or document?

    Several hundreds of them! <img src="{SMILIES_PATH}/icon_e_smile.gif" alt=":)" title="Smile">

    https://www.scirra.com/tutorials/all

  • Ok, you can disable collisions and disable Platform behavior.

    Or you can add another condition to your "Enemy on collision with character" event, something like this:

    Enemy on collision with Character

    Character compare variable Health>0 -> Character set Health=0

    This way this event will only be triggered if the character is alive.

  • You can use your method for separating digits:

    SysExt.ToDecimalMark(int(cash)) & "." & zeropad(Cents,2)

  • variable Cents=0

    Set Cents to round((cash-int(cash))*100)

    Set text "txt_cash" to -> int(cash) & "." & zeropad(Cents,2)

  • You can't read collision polygon size, but you can get image points position. So the solution would be to define 2 image points on each frame and then adjust your physics object accordingly.

    Use sprite.imagepointX(mage point number or name here) and sprite.imagepointY() expressions.

  • brunopalermo I think the main benefit of this method is that you can define different collision polygons for different frames/animations on the character, for better interaction with other objects. (Say, extended arm with a sword in "Attack" animation will damage enemies etc.)

    If you have Platform behavior on the same sprite, then constantly changing collision polygons can mess with Platform movements. For example, that extended arm with the sword will push the character away from walls. Or character can collide with the floor on some frames and "jump" for a few pixels, or lose connection with the floor and switch to "falling" state for a brief moment.

    If you have events like "If Platform is falling, Set animation to Falling", the character will switch from one animation to another very quickly.

    You probably know all this already, in this case I was explaining it to ssaamonn

    Simply create a rectangular sprite the same size as your character, make it invisible.

    Add Pin behavior to your character, on start of layout pin it to that sprite.

    Remove Platform behavior from your character and add it to that invisible sprite.

  • I suggest you do this without the TextBox. Use Text or SpriteFont object.

    It's easy -

    "On Any Key Pressed" if it's on of the letters/numbers, add it to the text. If backspace pressed, remove last character from text. On Enter, submit the string. And ignore all other keys.

  • I don't understand. When player collides with enemy, player should die, is this correct? Then why do you want to disable collision detection?

    Anyway, you can disable collisions for any object, use "Enemy-> Set collisions enabled/disabled" action.

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • You have asked this question before:

    3 months later and you still don't know how to move character?

  • The problem is - you can't detect "Left key is down" when cursor is inside the TextBox. It's not possible in Construct 2!

    That's what I was trying to tell you!

    I know you can erase with Backspace, but some people prefer pressing Left key or Home key if they want to correct a mistake in the beginning of the line and don't want to re-type everything. And if they press any of these keys, the real cursor will move, but your fake sprite cursor will not.

  • Lol, thanks for the video! You game looks cool!

    What I meant though is what happens when you press "Left" key on the keyboard:

    For example: you type "DESTRROY ALL HUMANS" and then you notice you made a mistake in the word "DESTROY" and you press Left key several times to move cursor there and correct it.