Post

16Tile Map & Physics

介绍Tile Map & Physics。

laser是一个区域(Area2D)不是一个物体,物体可能是玩家(CharacterBody2D)或者手榴弹(RigidBody2D)

Layer、Masks

在Godot中将可碰撞对象放置在不同的layer上,然后告诉它们只与特定的layer上的对象交互。该系统的工作方式是:

  • Layer决定对象本身位于那一层上(在Inspector->Collision->Layer里设置)
  • Mask决定它可以和那个Layer交互/碰撞(在Inspector->Collision->Mask里设置)

例子

  • 1.Layers:(Porject Setting->General->Layer Names->2D Physics给对应的Layer增加描述,Inspector->Collision->Layer和Mask的tip将显示Layer描述)
    • ①.Player
    • ②.Enemies(敌人)
    • ③.Objects(物体层)
    • ④.Projectiles(投射物激光、手榴弹)
    • ⑤.Items & Zones(物品和区域)
  • 2.Player(Player scene或plyer的character body2D)将出现在玩家层(layer),但它的Mask将与所有其他层进行物理交互
  • 3.Enmies本身将在敌人层(layer)上,然而它的Mask只能和Player、Objects、Projectiles交互,它无法和 Item & Zones产生交互
  • 4.Gate Area2D出现在 Items & Zones层上,它只能和玩家交互;Gate StaticBody2D出现在Objects层,它可以和Player、Enemies、Projectiles互动(Objects是不会移动的所以不会碰撞)
  • 5.手榴弹(grenade)它出现在Projectiles层而不是Player层;它可和除了Items & Zones外的其他层碰撞(即Mask交互),如果不设置 Projectiles Mask它们将不会碰撞
  • 6.House它出现在 Items & Zones层,它只和玩家交互

Tile Map 的物理层

  • 1.右侧Inspector面板,单击Tile Set下拉 Physics Layers点击添加物理层
  • 2.House所在的层在 Objects 层,它可以和Player、Enemies、Projectiles碰撞(Mark)
  • 3.在中下方面板点击Tile Set,点击Paint-> Paint Properties选择 物理层
  • 4.接下来绘制右侧 Tiles的碰撞区域
This post is licensed under CC BY 4.0 by the author.