C#中的2D Unity Enemy Chase / Evade脚本

时间:2016-04-21 21:35:39

标签: c# artificial-intelligence unity5

好的,所以我一直在用这个剧本打架几天了。我在其他方面取得了进步,但我似乎无法让我的敌人正确地追逐玩家角色。

剧本应该让敌人徘徊,直到一个空洞的孩子'眼睛'看到玩家。然后应该开始追逐玩家。想想pac-man。它现在正在做的是制作一个循环,然后停止,而不是看到玩家。

这是我到目前为止为该脚本编写的代码 -

using UnityEngine;
using System.Collections;

public class dudeFollow : MonoBehaviour {
Transform tr_Player;
float f_MoveSpeed = 3.0f;
private DudeMove moveScript;
public Transform eyes;
public float sightRange = 3f;


// Use this for initialization
void Start () {
    tr_Player = GameObject.FindGameObjectWithTag("Player").transform;
    moveScript = GetComponent<DudeMove>();
}

// Update is called once per frame
void Update () {
    RaycastHit hit;
    if (Physics.Raycast (eyes.transform.position,eyes.transform.forward, out hit,sightRange) && hit.collider.CompareTag ("Player")) {
    transform.position += transform.forward * f_MoveSpeed * Time.deltaTime;
    moveScript.enabled = false;
        }

}

}

任何帮助或提示都将不胜感激。

1 个答案:

答案 0 :(得分:0)

因为你有二维游戏,所以最有可能发生的事情就是你的敌人也会在z轴上产生奇迹,但因为它是二维游戏,你无法看到它。因此,切换到主场景窗口中的3D模式,看看是否是这种情况。

如果是,只需在每一帧上将z轴重置为0并禁用角动量:)我在2D游戏时就会发生这种情况。

matrixOutput