2D-скрипт Unity Enemy Chase / Evade на C #

Ладно, вот уже пару дней я борюсь с этим скриптом. Я добился прогресса в других аспектах, но, похоже, я не могу заставить своих врагов должным образом преследовать персонажа игрока.

В сценарии предполагается, что враги блуждают до тех пор, пока пустые детские «глаза» не увидят игрока. Затем он должен начать погоню за игроком. Подумайте о пакмане. Что он делает прямо сейчас, так это делает один цикл своего цикла блуждания, а затем останавливается и вообще не видит игрока.

Это код, который у меня есть для этого скрипта -

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

}

}

Любая помощь или советы будут оценены.


person GlitchWitch    schedule 21.04.2016    source источник


Ответы (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.
}
person Alexus    schedule 21.04.2016