巡逻时敌人消失

Enemy is disappearing when patrolling

我给敌人做了一个代码,它会左右移动并停在窗台上,但由于某种原因,敌人会消失得无影无踪,但敌人仍然可以打你,当我我正在靠近敌人所在的地方

这是我为 Enemy AI 编写的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PatrollingEnemy : MonoBehaviour
{
    public float speed; 
    private bool movingRight = true;
    public Transform groundDetection; //detects the ground if it is there...

    // Update is called once per frame
    void Update()
    {
        transform.Translate(Vector2.right * speed * Time.deltaTime);
        RaycastHit2D groundInfo = Physics2D.Raycast(groundDetection.position, Vector2.down, 2f);

        if (groundInfo.collider == false)
        {
            if(movingRight == true)
            {
                transform.eulerAngles = new Vector2(0, -200);
                movingRight = false;
            }
            else
            {
                transform.eulerAngles = new Vector2(0, 0);
                movingRight = true;
            }
        }
    }
}

这里是 link 如果你想看看它是如何使用这段代码的:Link for Bug

因为敌人变换的z轴值随时间递减,直到小于CAMERA z轴值并移出相机视野。

主要问题是当敌人向左移动时设置 transform.eulerAngles = new Vector2(0, -200); 并且当您将此代码与 transform.Translate(Vector2.right * speed * Time.deltaTime); 组合时,敌人以 -200 角度向右移动所以过了一段时间,它会超出相机视野(因为相机 z-index 可能默认设置为 -10)。

需要将y轴值的局部角度设置为180:

...
if (groundInfo.collider == false)
{
    if(movingRight == true)
    {
        transform.eulerAngles = new Vector2(0, 180); // Change -200 to 180
        movingRight = false;
    }
...
}
...

另一种方式:如果你想改变敌人的脸向左侧,你可以将localScale.x设置为-1而不是使用旋转。

这是一个简单的例子:

// Change face direction to the right when Moving RIGHT
transform.localScale= new Vector3(transform.localScale.x, transform.localScale.y, transform.localScale.z);

// Change face direction to the left when Moving LEFT
transform.localScale= new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z);