如何在我的俯视 2D 游戏中让僵尸跟随玩家而不会卡在地图的区域/角落?



我正在Unity 5.6.1f1中制作一个自上而下的2d僵尸游戏,我正在尝试使用C#中的简单脚本让僵尸跟随玩家。它有效,但是当玩家进入地图的某些部分并且僵尸跟随时,问题就来了,他们最终被困在墙的角落/边缘盲目跟随玩家。有没有办法解决这个问题,这样他们也许可以爬上墙壁并到达玩家身边,而不是等待玩家回到他们身边(僵尸总是在移动)。在我链接的图片中,僵尸沿着一条笔直的路径(红色箭头),我希望它们在墙壁/物体周围"橡皮筋",这样它们就不会像蓝色箭头那样被卡住。 这是我用于僵尸的脚本。我真的宁愿保持简单,不使用任何寻路解决方案,谢谢。

https://i.stack.imgur.com/LubiN.jpg

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ZombieScript : MonoBehaviour {
public float speed;
public Transform player;
void FixedUpdate () {
float z =Mathf.Atan2((player.transform.position.y - transform.position.y),(player.transform.position.x - 
transform.position.x)) *
Mathf.Rad2Deg - 90;
transform.eulerAngles = new Vector3(0, 0, z);
gameObject.GetComponent<Rigidbody2D>().AddForce(transform.up * speed );
}
}

根据我的理解,你真的不知道如何编码,所以你可能应该查找Unity内置的寻路系统,它完美运行并且易于设置,

https://unity3d.com/fr/learn/tutorials/topics/navigation 在这里,您可以获得有关导航的概述和大量链接,更准确地说是有关AI导航的链接

https://www.youtube.com/watch?v=S1lZyKI384Y 此视频和本系列展示了僵尸在 3D 中的寻路,但您应该能够对其进行调整以使其为 2D

以下是一些选项:

寻路:使用像A*或Dijkstra这样的寻路系统。为此,您可能需要进行一些基础地图,但是在资产商店中查找资产有一些很好的路径。

视线:在这个解决方案中,为什么不把一个编程问题变成一个游戏机制呢?僵尸不是很聪明,如果它们看不到你,它们可能会感到困惑。对于每个僵尸,如果它有直接朝向玩家的视线,它们就会向玩家冲锋。当他们看不到玩家时,僵尸会得到一个标记,他们最后一次看到玩家。实现此目的的一种方法是,如果僵尸可以看到播放器,则每帧更新播放器的目标位置。如果看不到玩家,则标记不会移动。

玩家路径(气味):让我们再次尝试将其制作成一个整洁的机制。也许跟踪玩家最近走过的路径,如果僵尸看不到你,它们会向最近的路径点移动,然后每个路径指向另一个路径点,直到僵尸再次看到玩家。

希望这有帮助。

最新更新