Questions about solid objects

0 favourites
  • 6 posts
From the Asset Store
Hand-painted tiles, objects, animated objects, and background to build a colorful Mayan civilization environment.
  • Hi, I just installed Construct 2 and did some of the beginners tutorials. Now I am trying to make a game but I don't exactly understand the solid behavior. I have my layout and all around the layout I placed sprites as a fence and gave them the solid behavior. My player character has the bullet behavior, no 8 directional movement because the player should move like in the game "snake". He is always moving forward and the player can rotate. The enemy has the bullet behavior too and should rotate randomly every few seconds. Both, player and enemy, are just going through my solid objects. I understand that you need the 8 directional movement behavior to make them react to solid objects but I need wasd-movement instead of the arrow keys. I understand too that I need to create events that check for player/enemy to collide with the fence and here it's getting tricky.

    I tried it first with the enemy: I want him to rotate 90 degrees clockwise when hitting the fence. So I made the event like this: Enemy - on collision with fence - enemy - rotate 90 degrees clockwise. This works when it first hits a wall. At the start he is in the middle of my layout walking to the right. He hits the fence and rotates 90 degrees and walks downward. But when he hits the next wall he rotates 180 going upwards, then again 180 and so on. I guess the problem is that when he hits the second wall he is exactly in the corner. He rotates 90 degrees clockwise walking along the fence but still touching it and thus rotates again in the next tick. What is the best way to avoid this? Moving the sprite a little bit away from the wall? But how do I know in which direction I should move it? Or is there a better way to let the enemy rotate when he touches the fence? There is the bounce off solids option, but I can't set the angle in which he is bouncing, right? Any other ideas maybe?

    Edit: Ha, searched for another problem and found the solution for this one. Instead of rotating the enemy by 90 degrees I can set the angle of the bullet movement to the actual angle - 90 degrees and it works.

  • Try Construct 3

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

    Try Now Construct 3 users don't see these ads
  • I was going to suggest checking that the solid objects were on the same layer as the player and enemy, but thankfully you have found the answer YEY

  • Still good to know that they have to be on the same layer. Didn't know that.

  • Unfortunately I have a similar problem with my player character but this time I don't know how to resolve it.

    Like I said the player character is moving with the bullet behavior and the player is able to rotate the angle of bullet movement by 90 degrees by hitting the wasd keys. I have done this with these events:

    Keyboard on W pressed - player - set bullet angle of motion to 270 degrees

    player - set animation to "WalkNorth"

    Same for A, S and D.

    Collision check looks like this:

    Player on collision with fence OR Player is overlapping fence - player set bullet disabled

    Now I thought I can just stop the bullet movement when the player hits the fence and enable it again when the player hits one of the wasd keys. But the player character only moves a bit after rotating and then stops again. Again I think this is because he is still touching the fence. Also the player can just hit the w key when standing at the top fence and he will move a bit up every time he does which lets the player character move through the fence.

    Then I tried to set the bullet speed to 0 when the player hits the fence but now it is acting pretty strange. When I hit the nort fence the character stops moving. A and D let him rotate to west or east but he only moves i tiny bit. When the character faces north and I hit W he doesn't rotate but moves a bit to the west. When I turn south and hit the S key he moves slightly to the east. I am not possible to move the character away from the fence.

    You can download the file here: Unfortunately I have a similar problem with my player character but this time I don't know how to resolve it.

    Like I said the player character is moving with the bullet behavior and the player is able to rotate the angle of bullet movement by 90 degrees by hitting the wasd keys. I have done this with these events:

    Keyboard on W pressed - player - set bullet angle of motion to 270 degrees

    player - set animation to "WalkNorth"

    Same for A, S and D.

    Collision check looks like this:

    Player on collision with fence OR Player is overlapping fence - player set bullet disabled

    Now I thought I can just stop the bullet movement when the player hits the fence and enable it again when the player hits one of the wasd keys. But the player character only moves a bit after rotating and then stops again. Again I think this is because he is still touching the fence. Also the player can just hit the w key when standing at the top fence and he will move a bit up every time he does which lets the player character move through the fence.

    Then I tried to set the bullet speed to 0 when the player hits the fence but now it is acting pretty strange. When I hit the nort fence the character stops moving. A and D let him rotate to west or east but he only moves i tiny bit. When the character faces north and I hit W he doesn't rotate but moves a bit to the west. When I turn south and hit the S key he moves slightly to the east. I am not possible to move the character away from the fence.

    You can download the file here: https: //www. dropbox. com/s/l5d5swmgasiy8a4/Snakelike.capx?dl=0

    Edit: And again, as soon as you post your question you find the solution. Can someone explain to me why this is working now and if there is a "right" solution for this problem?

  • Once i realized that This had happened to me a while ago I knew the answer!

    Ok so here we go.

    You are setting the angle of motion which fundamentally turns your entire sprite.

    The way to combat this is to have 2 sprites that make up your playable character.

    One that handles animations and one that handles movement.

    In the game I am currently developing I have just this: "Player_Animation" and also "Player_Movement"

    Add the "Pin" behavior to the "Player_Animation" Sprite and all you do is pin the animation to the movement sprite on start of layout.

    It's a pain to switch them over but you have so much more control over both movement AND animations by having them as separate sprites

    If you like I can post a demo of this or rummage around for a tutorial lol.

    Hope this helps!

    Happy programming!

    Chris

  • Hm, sounds more like an answer to my other thread. This would solve the problem with rotating line of sight without rotating the animation. I'm not sure how this would help with this problem but I will try it. Thanks.

Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)