dop2000's Forum Posts

  • Physics ragdoll must be made with phyiscs joints. You can't use Pin or hierarchy to connect body parts to each other.

    Hierarchy may be used only to spawn the ragdoll. Here is how you do it:

    1. Disable Physics by default for all body parts.
    2. Disable all "Transform X/Y/Width/Height" checkboxes in hierarchy properties for all body parts.
    3. Spawn the parent object, for example Body. All other body parts will also be automatically created.
    4. After "Wait 0" enable Physics for all spawned instances, pick children of this Body and create physics joints to them.

    Here is an example from my game

    (I don't need to pick children, because there is only one ragdoll on the layout at all times)

  • I think the problem has nothing to do with families. "Physics disable collisions" action affects all instances of this object, you can not disable it just for one.

    I suggest you disable Physics behavior for the dragged block, and re-enable it on drop.

    By the way, you should avoid mixing Physics with other behaviors - Pin, BoundToLayout etc. It may cause all kinds of bugs. So this is another reason why you should disable Physics while dragging the block. And when it's dropped, make it immovable instead of pinning.

  • 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.