(魔兽世界)2D游戏demo的逻辑上的错误敬请见谅

(魔兽世界)2D游戏demo的逻辑上的错误敬请见谅

碰撞检测是 2D 游戏开发中经常使用的东西。 当我们制作游戏演示时,碰撞检测基本上无处不在。 我们可以利用碰撞检测来实现一些基本的功能,比如碰撞、跳跃地面检测、NPC交互检测、拾取物品检测等。

碰撞检测对于碰撞体组件和刚体组件至关重要。 在2D游戏中,它们是xxcollider2D和Rigicbody2D。 同时开发学习,还可以设置碰撞体作为触发器,选择是否计算碰撞的反馈。 您可以勾选碰撞体界面上的复选框。 Select 是触发器,用于选择触发器。 可以简单理解为触发器是一个没有碰撞体积的碰撞体。

碰撞器和触发器使用不同的方法:

触发器是:

void OnTriggerEnter2D(Collider2D collider); //当触碰到触发器时
void OnTriggerStay2D(Collider2D collider); //当和触发器保持接触时
void OnTriggerExit2D(Collider2D collider); //当和触发器结束碰撞时

三种方法对应不同的碰撞情况,碰撞体基本相同:

void OnCollisionEnter2D(collision collision);
void OnCollisionStay2D(collision collision);
void OnCollisionExit2D(collision collision);

这些方法中传入的参数是碰撞器或者是与自身发生碰撞的碰撞信息。 你可以查看参数信息,了解谁和你碰撞了。 通过在方法中编写一些判断,就可以实现基本的碰撞检测。 对于地面探测,通过将碰撞体设置为触发器,挂在NPC和物体上,可以实现基本的交互和拾取。 射线检测可用于多种用途贴图笔刷,例如模拟射击游戏中的子弹,以及接下来提到的地面检测。

地面探测几乎是每个游戏中必不可少的操作。 实现地面检测的方式有很多种,ray是常用的一种unity 2d射线碰撞检测,而且语法也很简单。

RaycastHit2D rayhit = Physics2D.Raycast(rayStartPosition, Vector2.down, dis, groundLayer);

2D 中的光线由 RaycastHit2D 声明。 这四个参数分别是射线起点、射线方向、射线距离和作用水平。

射线的起点是一个向量2类型的向量

射线方向是一个向量2类型的向量。 您可以使用向量中的默认类型vector2.down来输入向下的单位向量。

射线的距离是一个float类型,使用射线起点到脚的距离。 您必须自己测量并输入常数。

使用的level是Layermask类型,是32位int类型。 如果地面层是第n层unity 2d射线碰撞检测,则可以使用1

文章来源:https://blog.csdn.net/Zhidai_/article/details/86757801