官术网_书友最值得收藏!

Obstacles

Finally, the game can be made a bit more challenging by introducing an obstacle that the player must avoid. Touching the obstacle will end the game.

Create a new scene for the cactus and add the following nodes:

  • Area2D (named Cactus)
  • Sprite
  • CollisionShape2D

Drag the cactus texture from the FileSystem dock to the Texture property of the Sprite. Add a RectangleShape2D to the collision shape and size it so that it covers the image. Remember when you added if area.is_in_group("obstacles") to the player script? Add the Cactus body to the obstacles group using the Node tab (next to Inspector).

Now, add a Cactus instance to the Main scene and move it to a location in the upper half of the screen (away from where the player spawns). Play the game and see what happens when you run into the cactus.

You may have spotted a problem: coins can spawn behind the cactus, making them impossible to pick up. When the coin is placed, it needs to move if it detects that it's overlapping the obstacle. Connect the coin's area_entered() signal and add the following:

func _on_Coin_area_entered( area ):
if area.is_in_group("obstacles"):
position = Vector2(rand_range(0, screensize.x), rand_range(0, screensize.y))

If you've added the preceding Powerup object, you'll need to do the same for its area_entered signal.

主站蜘蛛池模板: 广州市| 西贡区| 胶州市| 桂林市| 阜阳市| 牙克石市| 句容市| 罗平县| 阜城县| 桦川县| 安图县| 罗平县| 甘泉县| 宁南县| 宿松县| 潍坊市| 浙江省| 沛县| 天台县| 奎屯市| 平乐县| 交口县| 海伦市| 仙桃市| 齐河县| 和林格尔县| 偏关县| 阳高县| 郴州市| 长泰县| 哈尔滨市| 萝北县| 崇左市| 迭部县| 福泉市| 兰溪市| 沭阳县| 叶城县| 蓬莱市| 曲阳县| 泾源县|