Session15:AI敌人移动
为敌人添加一个移动效果,通过添加左右的子object来设定移动的距离:
public class Enemy_Frog : MonoBehaviour
{
public Rigidbody2D rb;
public Transform leftpoint, rightpoint;
public float speed;
//控制转向,默认向左
private bool faceLeft = true;
private float leftx, rightx;
// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody2D>();
transform.DetachChildren();
//获取子物体坐标
leftx = leftpoint.position.x;
rightx = rightpoint.position.x;
//销毁子物体
Destroy(leftpoint.gameObject);
Destroy(rightpoint.gameObject);
}
// Update is called once per frame
void Update()
{
Movement();
}
void Movement()
{
if(faceLeft)
{
rb.velocity = new Vector2(-speed, rb.velocity.y);
if(transform.position.x < leftx)
{
transform.localScale = new Vector3(-1, 1, 1);
faceLeft = false;
}
}
else
{
rb.velocity = new Vector2(speed, rb.velocity.y);
if(transform.position.x > rightx)
{
transform.localScale = new Vector3(1, 1, 1);
faceLeft = true;
}
}
}
}
设置好这些之后,将敌人变成预制体,放到场景中,就可以分别调整每一个敌人各自子物体的位置来调整各自的移动范围。