dop2000's Forum Posts

  • bump...

  • You don't need hundreds of sprites, you only need one TileMap.

    It's not straightforward, but doable. Create different tiles for different situations -

    1. dug (or digged ) tile and no other dug tiles around

    2. dug tile and one dug tile next to it

    3. dug tile and two dug tile next to it - on right and below

    4. dug tile and two dug tile next to it - on left and right

    5. dug tile and three dug tile next to it

    6. dug tile and all tiles around also dug

    7. grass tile

    You can use these 7 tile types to form any kind of landscape.

    When player digs a tile, check the state of neighboring tiles and select the correct tile type. Rotate it if required.

    Then update the neighboring tiles the same way.

  • The or event picks 4 instances because all 4 instances meet the logic. Right?

    Yes, but the parent "compare instance variable" event picked only 1 instance. So the sub-event should not pick more than 1.

    Also, changing the order of conditions in Or-block should never affect the result! It's against the binary logic.

  • Did some more testing. This only happens with Or-blocks, and the order of conditions matters!

    "Sprite.a=1 or Sprite.c=1" picks 1 instance.

    "Sprite.c=1 or Sprite.a=1" picks 4 instances.

    So I'm 99% sure this is a bug.

  • newt, Sorry, I still don't understand.. This kind of ruins my whole system of belief in how C2 picking works. And it can potentially mean lots of hard to detect bugs in my games...

    Is there a tutorial or something that explains differences between "normal" and system picking?

    How can you explain this?

    System Pick Sprite with c=1    // System picking - only one instance is picked
       
        Sprite.c=1     // This is "normal" picking, right?
                       // picks just one instance
    
              Sprite.a=1   // If I put Or-block into a sub-sub-event under "normal" picking sub-event, 
              or           // it still incorrectly picks 4 instances!
              Sprite.b=1    
    [/code:e6fk0rs9]
    Here is the updated capx:
    [url=https://www.dropbox.com/s/jyc2ctj1hlqh3oo/Picking_Bug2.capx?dl=0]https://www.dropbox.com/s/jyc2ctj1hlqh3 ... .capx?dl=0[/url]
  • If the path is not a straight line, then yes, it would probably be easier to use physics.

    If you don't want to deal with the wheel rotation, friction, revolution joints etc., you can use an invisible sprite with physics behavior. Push it downhill and then on every tick set your cart to that sprite position and angle.

  • You can put a small invisible sprite inside the cart. When player is in collision with this sprite, start moving the cart.

    You can also disable player's controls while the cart is moving and pin player to it.

  • minigame This is strange. Could you share your capx?

  • newt What do you mean? I thought picking conventions are always the same, no matter which event was used to pick instances.

    And why "AND" block with the same conditions works fine (respects the set of instances picked by parent event), while "OR" block doesn't?

    Here is the code in a nutshell:

    // a=1 for all instances
    // b=1 for all instances
    // c=1 for one instance
    
    System Pick Sprite with c=1    // only one instance is picked
        
        Sprite.a=1
        Sprite.b=1    // Correctly picks just one instance
    
        Sprite.a=1
        or
        Sprite.b=1    // Incorrectly picks 4 instances
    [/code:18m5yq6f]
  • Use TileMap object, it would be perfect for the task. You can find a few tutorials here:

    https://www.scirra.com/tutorials/all

  • This is not a bug. You need to follow this tutorial to embed the font into your game:

    https://www.scirra.com/tutorials/237/ho ... -web-fonts

  • Problem Description

    In parent event "System->Pick by comparison" or "Pick by evaluate" is used to pick some sprite instances.

    If "Or" block is used as a sub-event, it ignores picked scope and evaluates all instances of this sprite instead.

    Attach a Capx

    https://www.dropbox.com/s/98slz4y9w6clo ... .capx?dl=0

    Description of Capx

    A very small and well-commented example demonstrating the problem.

    Steps to Reproduce Bug

    Run the CAPX

    Observed Result

    Parent event "System->Pick by comparison" picks only one instance of Node sprite.

    In sub-event ("Or" block) the Node.pickedCount suddenly becomes 4.

    Expected Result

    In all sub-events picked count should not exceed 1.

    Affected Browsers

    • Chrome: (YES)
    • FireFox: (YES)
    • Internet Explorer: (YES)

    Operating System and Service Pack

    Windows 8.1

    Construct 2 Version ID

    Construct 2, Release 246

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • Your event #7 has two contradicting conditions (platform moving AND platform not moving), so it will never be triggered.

    Same with event #9

    Change them like this:

    Or you can use "Else":

    Platform is moving -> Set animation to Run

    Else -> set animation to Idle

  • You can make a grid with square sprites and use "Pick nearest" to find the nearest cell.

    Or use a tilemap, it has SnapX and SnapY expressions.

    Or you can do it with math. Say your grid cells are 10*10px. And player drops a piece at x=77, y=22

    Use these formulas to find the nearest cell:

    nearestX = (round(x/10)*10)=80

    nearestY = (round(y/10)*10)=20

    Once you know the destination coordinates, you can move your piece there using a behavior like MoveTo or LiteTween.

    Or without any behaviors:

    On every tick

    Piece set x to lerp(piece.x, destinationX, dt*4)

    Piece set y to lerp(piece.y, destinationY, dt*4)

  • You can try a trick with a family.

    Create a family with sprite A.

    Then use "FamilyA spawn A"

    "A.UID" in this event will refer to UID of a newly spawned instance.

    Or you can use "System->Create" action:

    Function call "CreateNewA" (A.x, A.y)
    
    On function "CreateNewA" 
       System-> create new A on layer 0 at (function.param(0), function.param(1))
       A set instance variable ....
    [/code:1kr5a5k7]