我们社区的U小粽同学表示“救不了中国的,我要救吃豆人”。于是整合和精简了该教程中的代码,并提供了项目的资源包下载(下载在本帖附件),你可以直接进行下载学习,如果有任何问题,欢迎大家反馈给U小粽同学。

以后,我们也会提供更多项目教程和案例与大家分享。现在让我们来拯救吃豆人吧。 202134jrfq4du02m3f483m.png

以下二个问题,是原教程中的问题。
问题1:按照教程编写,当Player移动到部分墙体位置,Player便无法移动?
203209aqe734au7p1bb1g3.png

首先先看看在这种请况下,目标点与Player当前的位置关系,我们通过Debug.log进行判断。
203236ekl104kf8sqze15k.png

以下是所得到的结果:
203306kfdee0f3of60fmod.png

很明显的发现,目标点位置超出了Player当前位置一个单元格,因此我们可以得出结论,在此处无法移动的原因是:Player由于墙体的拦截无法到达目标点。

(Vector2)transform.position == dest
的判断无法为True,其他方向的移动无法执行。

简单分析其原因,Player在移动过程中,当到达目标点后,不会立即停止移动,而此时脚本已经开始执行替换目标点的代码。由于墙体的拦截,Play的位置与目标位置不等,导致Player无法移动的现象。

故此,我们需要在判断行进路线时考虑这一因素。见下图
203345o08zczxjy90ky083.png

自此,该问题得到了解决。

● 问题 2:某些位置时会出现如图现象,Player无法移动。

203444ifllnlzb84uze8e0.png
这个问题是因为射线没有检测到墙体,最简单的方法是将墙的Collider进行稍微扩大。

最后,希望大家用Unity做成更多更棒的2D游戏哦。

锐亚教育

锐亚教育 锐亚科技 unity unity教程