Почему ИИ не следует за игроком? - PullRequest
0 голосов
/ 26 апреля 2019

Итак, я написал некоторый код, и в нем все работает, кроме AI, следующего за игроком.Я не знаю, что я сделал не так, поэтому любая помощь будет с благодарностью оценена!

public class SharkAI : MonoBehaviour
{
    public float speed;


    public Transform patrolPoints;

    private float waitTime;
    public float startWaitTime;

    public float minX;
    public float maxX;
    public float minY;
    public float maxY;

    public float oldPosition;
    public float newPosition;

    private SpriteRenderer fishes;
    public float eyeSightOfFish;
    public float disToPlayer;

    private Transform player;

    // Start is called before the first frame update
    void Start()
    {
        waitTime = startWaitTime;
        patrolPoints.position = new Vector2(Random.Range(minX, maxX), Random.Range(minY, maxY));
        fishes = GetComponent<SpriteRenderer>();
    }

    // Update is called once per frame
    void Update()
    {
        player = GameObject.FindGameObjectWithTag("Player").GetComponent<Transform>();
        oldPosition = transform.position.x;
        newPosition = patrolPoints.position.x;
        Debug.Log("Player distance " + disToPlayer);

        //distToPatrolPoint = Vector3.Distance(transform.position, patrolPoints[whichPoint].transform.position);
        disToPlayer = Vector2.Distance(transform.position, player.transform.position);

        transform.position = Vector2.MoveTowards(transform.position, patrolPoints.position, speed * Time.deltaTime);

        if (newPosition > oldPosition)
        {
            fishes.flipX = true;
        }
        else { fishes.flipX = false; }

        if(disToPlayer <= eyeSightOfFish)
        {
            transform.position = Vector2.MoveTowards(transform.position, player.position, speed * Time.deltaTime);
        }

        else if (Vector2.Distance(transform.position, patrolPoints.position) <= 0.2f)
        {
            if (waitTime <= 0)
            {
                patrolPoints.position = new Vector2(Random.Range(minX, maxX), Random.Range(minY, maxY));
                waitTime = startWaitTime;
            }
            else
            {
                waitTime -= Time.deltaTime;
            }
        }
    }
}

, поэтому я не уверен, где это не так, и я попробовал несколько вещей, но я не могу сделать aiследуйте за игроком.

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