dop2000's Forum Posts

  • Yeah, it looks better. Although this event is still wrong:

    It will run on every tick while the conditions are true, and will create lots of delayed threads - because of "Wait 0.5s" action. So even if another event starts the "Attack" timer and set Attacking to true, those delayed threads will reset Attacking variable back to false for half a second.

    Avoid using Wait action in non-triggered conditions.

  • Remove "trigger once" from all events and never ever use it inside of triggers, loops, and especially with objects that have multiple instances! It's the cause of all your bugs.

    Instead of "trigger once" use additional conditions, or Timer behavior. For example, in the last event on your first screenshot you can add another condition: Tween "Idle" is not playing.

    Timer is a very useful behavior for such games. For example:

    Enemy has LineOfSight to Player 
    Enemy timer "attack" is not running : Enemy start timer "attack" for 1 second
    
    Enemy On timer "attack" : Enemy spawn a bullet
    

    This is a proper alternative to "trigger once" and "wait 1 second" (which won't work correctly for multiple instances).

  • Can you make a small demo or post a screenshot of the event sheet? Your project is 27MB in size and requires addons which I don't want to install.

  • Usually mechanics like this are done with instance variables and timers. Say, the enemy may have State and Direction instance variables.

    When it sees the player - set State to "attack", stop Bullet etc.

    When the player is no longer in LOS - set State to "patrolling". Depending on the Direction variable set mirrored/not mirrored, re-enable bullet.

    On collision with walls - change Direction value, start a timer to resume movement.

    And don't use "Wait" action, because you can't control it. If the player appears in enemy's LOS during the 2s delay, you won't be able to cancel waiting actions. So always use the Timer behavior to schedule events.

  • "System compare two values" or "System evaluate expression" doesn't pick object instances! So if you have multiple enemies, it will only evaluate the distance to the first enemy instance. You need to use LineOfSight behavior instead.

    For each Wizard
    .. Wizard has LineOfSight to Player : fire at player
    .. Else : continue patrolling
    

    You can use "System pick by evaluate" condition to pick by distance, but the LOS behavior is a better choice.

  • You can make a snapshot (System action). Then load this snapshot into a sprite. Then paste the sprite onto a canvas.

    I don't know why DrawingCanvas doesn't support loading images directly, so that's the only way.

  • Use the Date plugin:

    construct.net/en/make-games/manuals/construct-3/plugin-reference/date

    Save the progress in Local Storage, or simply with System Save/Load actions.

  • There is was an app like that (which I helped to develop):

    tidyque.com

  • No, just reproduce all events correctly.

  • The easiest way is to put all variables into a dictionary. Then write Dictionary.AsJSON to a text file.

    To load: read the text file and use 'Dictionary Load from FileSystem.FileText'. Then extract all variable values from the dictionary.

  • That depends. If you're running your game as an Android app on Google TV, the remote will likely function as a standard gamepad.

    If you want to use an IR remote on a PC, you'll need an IR receiver, a driver for it, and possibly a Construct addon.

  • "Is visible" condition should be above "Pick random". You want to first pick all visible instances, and then pick a random among them.

  • The problem is that objects are not destroyed instantly. So the loop can still pick the spawner instance which has been destroyed. A simple solution is to check another condition, say make destroyed spawners invisible and pick only among visible instances.

    +Repeat NumberToGenerate times
    ++Spawner Is Visible
    ++Pick a Random Spawner Instance
     Spawner: Spawn EnemyBase
     Spawner: Set invisible
     Spawner: Destroy 
    
  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Definitely use the hierarchy feature, remove all containers. You can create the entire menu on a different (unused) layout, add all objects to a hierarchy. Tick "create hierarchy" checkbox in "Create object" action. This will create the entire menu!

  • I'm not sure I understand. Do you want to re-color portions of the sprite in runtime?

    We use ReplaceColor effect in our game and it works quite well.