【问题标题】:2D Unity Enemy Chase/Evade script in C#C# 中的 2D Unity Enemy Enemy Chase/Evade 脚本
【发布时间】:2016-04-21 21:35:39
【问题描述】:

好的,我已经与这个脚本斗争了几天了。我在其他方面取得了进步,但我似乎无法让我的敌人正确地追逐玩家角色。

脚本应该让敌人四处游荡,直到一个空洞的孩子“眼睛”看到玩家。然后它应该开始追逐玩家。想想吃豆人。它现在正在做的就是在它的徘徊循环中循环一次,然后停下来根本看不到玩家。

这是迄今为止我为该脚本编写的代码 -

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;
        }

}

}

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

【问题讨论】:

    标签: c# artificial-intelligence unity5


    【解决方案1】:

    因为你有 2D 游戏,最有可能发生的事情是你的敌人也在 z 轴上奇迹般地离开了,但是因为它是 2D 的,所以你看不到它。所以在你的主场景窗口中切换到 3D 模式,看看是不是这样。

    如果是,只需在每一帧将 z 轴重置为 0 并禁用角动量 :) 我在 2D 游戏中遇到过这种情况。

    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;
            }
        transform.position.z = 0; // or something along those lines, I don't remember the syntax exactly.
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-20
      • 1970-01-01
      • 2015-10-01
      • 1970-01-01
      • 2022-12-02
      • 1970-01-01
      • 2020-05-01
      • 1970-01-01
      相关资源
      最近更新 更多