dop2000's Forum Posts

  • You are probably using "On key pressed" conditions, which are triggered once per pressed key. You need "Is key down" conditions which continue to run continuously.

  • It's for organization only. You can also copy/paste/import/export the entire folders of animations.

  • Seems like you've got everything right - a state machine based on instance variables and timers, families, functions etc. That's how games with multiple enemies are made in Construct.

    Don't use top-level events like "Enemies state=attack : do something", this is bad practice and bad for performance.

    Use Timer behavior to change enemy states and to switch targets. Use LOS and Pathfinding behaviors to look for targets and chase them.

    There are lots of ways to pick targets. You can, for example, do something like this if you don't want all enemies to attack one target:

    Enemy On "pick_new_target" Timer
    Enemy Pick Allies in LOS
    
    .. For each Allies
    .... Enemies pick All
    .... Pick Enemies that are already targeting this Ally -> Save their count in an instance variable Allies.targetedBy
    
    .. Pick Allies instance with the lowest targetedBy value 
    

    If you are new to C3, one of the most important concepts is picking. Once you understand how instances are picked in events (and in nested events), it all starts to make sense.

  • Yes, family and hierarchy is not the same.

    Use a hierarchy if you need to combine lots of objects and move them all together.

  • You are probably not picking the right enemy instance. You need to show your code, screenshots of your game are not helpful.

  • Do you disable phaseOneStart variable? Because if not, the first event on your screenshot will be repeated on every tick, creating hundreds or even thousands of delayed threads, each of which spawns a new alert instance, creating a terrible mess.

    Make sure this doesn't happen.

    Use Debug Preview (Shift+F4) to debug your project, for example to check what's going on with the alert sprite.

    And use Timer behavior instead of "waits".

  • Ah, that's because the Base instance picked is the one that's overlapping PS.

    Try this:

    Alternatively, you can save baseID on the PS sprite when it arrives. Then, when a button is clicked, pick PS the same way you pick connected bases.

    PS.baseID=Button.connectionA | PS.baseID=Button.connectionB

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Check if Mouse1 and EnemyBox1 are in a container.

  • NWJS versions 76-85 don't work with worker. This may be the reason of the black screen. Try disabling worker in project properties.

    This should be fixed in the upcoming NWJS 86.

  • Yes, picking PS by distance won't always be accurate, especially for diagonal paths.

    Instead, when a button is clicked, pick two bases connected to it, then pick PS instance overlapping these bases. Then pick unoccupied base from the two. Then move PS to that base.

  • No worries!

    Gamepad stick returns two values from -100 to +100, for horizontal and vertical axes.

    angle(0, 0, axisX, axisY) will give you the angle of the stick

    distance(0, 0, axisX, axisY) will give you the distance - how far it is from the center.

    Using these values you can move your cursor.

  • I noticed that some buttons were incorrectly configured in your project - check all IDs and connections.

    Also, like I said, when a button is pressed, you need to pick the valid PS instance, which is on a base connected to the button. Not sure if picking by distance will always work.

    If there are other problems, I highly recommend using Debug View and console logging for troubleshooting.

  • You can combine all objects into a hierarchy, and then move them all with a single action.

  • After you re-enable the behavior (or immediately before disabling it), set its vector X and Y to 0.