dop2000's Forum Posts

  • Do you an object associated with these characters, say, are they sprite instances? Then the easiest way is to add instance variables CharName and CharHeight to the sprite. You will be able to pick a character with highest/lowest height, or iterate through them ordered by height.

    If characters exist only as data, then it's a completely different approach. For example, if there is an array of characters, you can sort it by height and get the first/last record from the array.

  • There are a few basic math expressions which you can use - min, max, clamp. You can read about them here:

    construct.net/en/make-games/manuals/construct-3/system-reference/system-expressions

    For example, you can modify your formula like this to avoid "healing" the enemy or dealing too much damage:

    Set EnemyHP to EnemyHP-clamp(((PlayerAttack + max(PlayerStat-EnemyStat, 0) - EnemyDefense), 0, 100)

    .

    Or you can use max() to pick the highest value from multiple stats - max(enemyShield, enemyArmor, enemyEnergy)

  • There is no such thing as object parallax. You need to place them on layers with different parallax. Or move them at different speeds with events.

    Or maybe you mean Z Elevation setting? This one you can set for each individual object.

  • This can be caused by collision polygons. If your sprite has an animation playing and each frame has a different polygon or different position of the origin image point - then when animation frame changes, it may collide with the marker/wall, even if the sprite has already turned and started moving away from it. As a result, it immediately turns again and walks through the wall.

    The common solution is to use a separate sprite (simple invisible rectangle) for the collision box, and pin your animated sprite to it.

    Another option is to add a "cooldown" period. After colliding with the wall, ignore further collisions for this sprite for 0.5 seconds. You can use an instance variable "lastCollision", set it to time expression. And in "On collision" event check that lastCollision<(time-0.5)

  • Recruit_Zer0 You can use Bullet behavior or Physics to continue moving the object when mouse button is released.

    See "On Drop" event in this demo:

    howtoconstructdemos.com/scrolling-a-list-of-players-scores-images-etc-example-a-capx

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • As far as I know it's not possible to access other members in the container if you refer to them via family.

    Consider combining all these sprites into one. So instead of 12 separate Body sprites use one sprite with 12 animations. They will be much easier to work with and you will be able to use containers.

    With separate objects like you have now, it's almost pointless to combine them into containers. If you need to have separate objects, then I would suggest grouping them using hierarchy (scene graph). Hierarchy is compatible with families, so you will be able to do things like "For Each ArrowbodyFamily Pick Child ArrowheadFamily"

  • Not sure I understand the question. Do you have multiple instances of the same objects, grouped in containers? Then you can simply use "For each" loop for one object in the container, and instances of other objects will be picked automatically.

    For example, if you have a container with Car+FrontWheel+RearWheel sprites, you can do "For each Car -> FrontWheel Pin to Car, RearWheel Pin to Car".

  • ACCES-Mathieu You can always load older versions of the editor if you need to open projects with C2 runtime, since this runtime haven't been updated in a long time.

    For example:

    https://editor.construct.net/r234-4

    You might need to edit version number in your project, see this tutorial.

  • My strategy is doing nothing. You can't force people to watch ads, they'll stop playing your game. "Free" players are still better than no players.

  • Magistross Thanks for the info!

    I posted this idea on the suggestions platform a few months ago, but it will never get enough votes to be considered by Scirra..

  • I usually use some character, for example ^. And then replace this character with newline expression.

    For example, you may have this text in the dictionary:

    Hello there,^general Kenobi!

    When you're showing it on the screen, you can do this:

    Text set text to replace(Dictionary.Get("greeting"), "^", newline)

    .

    And of course you can optimize the code by creating a function, which will return formatted text from the dictionary for any key.

  • No, I meant you only need to load one file. If device language is English, load English file, if Russian - load Russian. Use the same AJAX tag. So as a result, the dictionary will contain strings only for one language.

  • Check out this template:

    editor.construct.net

    I've also seen a few tutorials, you can try googling.

    I think the easiest way would be using a dictionary. Prepare a separate dictionary file for each language in the project, for example "Strings-EN.json", "Strings-FR.json"

    On startup when you detect device language, request the required file with AJAX and load it into the Lang dictionary. In this dictionary you can use codes as keys and translations as values. For example, the key can be "GameOverText" and the value in the French file can be "Jeu terminé!"

    And then you set text for your text object to Lang.Get("GameOverText")

  • I don't understand your setup. Are level buttons instances of one sprite? Or are they different sprites?

    The easiest way is to make one sprite object LevelButton, and add "Level" instance variable to it. Manually set level numbers to all buttons in the layout editor. Then you can use "LevelButton compare variable" to reference them.

    For example:

    LevelButton compare variable Level>(CurrentLevel+1)
    	LevelButton set invisible