dop2000's Forum Posts

  • Change your events to this:

  • Distance between enemy and player:

    distance(enemy.x, enemy.y, player.x, player.y)

    Angle from enemy to player (to shoot bullets):

    angle(enemy.x, enemy.y, player.x, player.y)

    Or use Line Of Sight behavior if you also need to take into account obstacles. You can set maximum distance for Line of Sight.

  • Move "Function call" after "Sprite133 Set isOccupied=true".

    And remove "Word append.." from this event, because this is done with the function now.

    Edit: actually, you should add another "Function call" in the Else event, after "Letters1 set position to (startY, startY)"

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Akia410

  • Almost..

    Events 17,18,19 should not be under "On Start of layout".

    I recommend you create a function "UpdateWord" and move these events to the function.

    Call this function after any letter is dropped.

  • No, instance variables. You have them on some other sprites, for example your PlayerBattle sprite has instance variable "health".

    Instance variables is a powerful thing, you should use them more.

    Create instance variable "startX" and "startY" on the Letters sprite. Set them to each letter's position on start of layout.

    This will allow you to return any letter instance to its original position when needed. Say, when it's dropped not on the grey box.

  • Just remove the quotes:

    Set position to (BlockMoveable(21).BBoxLeft-2, .....

    As for the second part (int(selectedObject & ".BBoxTop")), this will not work. You can't refer to objects in C2 by their string name. Same applies to expressions.

    It's hard to tell what are you trying to do from the screenshot. If multiple objects/sprites can be selected, then one possible solution would be to add all such objects to a family. Use SelectedObject variable to store UID of the selected instance.

    Then do this:

    MyFamily -> Pick by unique ID = SelectedObject

    .........HighlightBox Set position to (BlockMoveable(21).BBoxLeft-2, MyFamily.BBoxTop-2)

  • max2612 It's on the properties panel:

  • Two ways to do this:

    1. Use System->Set Time Scale=0 for the object with Timer. This will stop everything for this object.

    2. Save timer remaining time in a variable (I believe it's object.Timer.Duration-object.Timer.TotalTime)

    Then stop the timer. After player answered the question, start the timer again for the remaining time.

  • NeronSparda

    Mayfly

    Here are my thoughts -

    I think Bullet behavior would be a poor choice for a billiards game, it's very inaccurate. Physics may work a little better as you can set "Collision mask=circle" for balls, but I'm still not sure.

    If you want precision, you will need to calculate reflection angles and collision points in advance. Collision points too because a fast moving ball can travel long distances in one tick and if you rely on C2 collision detection, it will also be very inaccurate.

    You can also try these plugins:

    https://c2rexplugins.weebly.com/rex_light.html

    plugin-jcw-trace-raycast_t172320

  • Are you moving the sprite with Bullet behavior?

    If yes, disable "Set angle" in Bullet settings.

    Then use Bullet->Set angle of motion -> Angle (sprite.x, sprite.y, destination.x, destination.y)

  • Darxoon

    Say you have Enemy sprite with instance variable Health.

    And you want to count all enemies with full health and display this number in MyText.

    Add event

    Enemy -> Compare instance variable Health=100 -> MyText set text to ("Enemies with 100% health:" & Enemy.PickedCount)

  • Local Storage has nothing to do with layers or layouts.

    It's just a method of storing data. What data you store and when in the game you retrieve it - it's up to you.

  • Well, if you want the bullet to immediately change angle, you can remove the alnglelerp part.

    Simply set angle to angle(Self.X, Self.Y, Target.X, Target.Y)

    anglelerp was to make the trajectory smoother.