Raycast проблема с погони AI - PullRequest
0 голосов
/ 11 апреля 2019

В моем сценарии у меня есть метод патрулирования и метод погони.Мой код погони с использованием Ray Cast не работает должным образом.Единственное, что работает, это мой патрульный код AI.Когда я нажимаю на луч, который я назначаю, он не преследует меня.Однако, когда я удаляю код патруля в моем скрипте, мой код погони работает нормально.В чем будет проблема?Я хочу, чтобы мой ИИ патрулировал и преследовал.Если есть какое-либо столкновение, и если игрок находится вне столкновения, ИИ снова начнет патрулировать

public class LineTrigger : MonoBehaviour {

    private Transform targett;
    public Transform sightStart, sightEnd;
    public bool spotted = false;
    public GameObject arrow;
    public GameObject target;
    public bool facingRight = false;

    public float speed = 8;

    [SerializeField]
    float moveSpeed = 3f;
    Rigidbody2D rb;
    Vector3 localScale;
    float dirX;
    Vector3 directionToTarget;

    void Start()
    {
        localScale = transform.localScale;
        rb = GetComponent<Rigidbody2D> ();
        dirX = -1f;
        target = GameObject.Find ("Girl");

    }

    void Update()
    {
        if (transform.position.x < 1f)
            dirX = 1f;
        else if (transform.position.x > 20f)
            dirX = -1f;


        Raycasting ();
        Behaviours ();
    }

    void Raycasting ()
    {
        Debug.DrawLine (sightStart.position, sightEnd.position);
        spotted = Physics2D.Linecast (sightStart.position, sightEnd.position, 1 << LayerMask.NameToLayer ("Girl"));
    }

    void Behaviours()
    {
        if (spotted == true) {
            arrow.SetActive (true);
            directionToTarget = (target.transform.position - transform.position).normalized;
            rb.velocity = new Vector2 (directionToTarget.x * moveSpeed, directionToTarget.y * moveSpeed);
        } 
        else 
        {
            arrow.SetActive (false);
        }

    }

    void FixedUpdate()
    {
        rb.velocity = new Vector2 (dirX * moveSpeed, rb.velocity.y);
    }

    void LateUpdate()
    {
        CheckWhereToFace ();
    }

    void CheckWhereToFace()
    {
        if (dirX > 0)
            facingRight = false;
        else if (dirX < 0)
            facingRight = true;

        if (((facingRight) && (localScale.x < 0)) || ((!facingRight) && (localScale.x > 0)))
            localScale.x *= -1;

        transform.localScale = localScale;
    } 

}

1 Ответ

0 голосов
/ 12 апреля 2019

Я думаю, что вы пропустили if (! Spotted) в вашем FixedUpdate

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...