写在最前面的话
上一篇博客,我们控制了玩家的移动,但这还不够,我们需要让敌方也动起来。
一、大致概要
人机的移动,我们采用随机数来控制,分别包括(前进,转弯,爬升,俯冲)。
为了避免占用过量的资源,我们使用定时器实现,每秒更新一次动作。
二、代码实现
using System.Collections; using System.Collections.Generic; using TMPro; using UnityEngine;public class AIPlane : MonoBehaviour {private float Speed = 0.465f;private float lastTime;private float Tmp = 0.0f;private void Start(){lastTime = Time.time; // 获取当前时间}void FixedUpdate(){transform.Translate(0, 0, Speed); // 保持前进if (Time.time - lastTime > 1){lastTime = Time.time;if ((int)(Random.value * 1000) % 3 == 0){speed += 0.01f; // 加速减速}if ((int)(Random.value * 1000) % 3 == 1){speed -= 0.01f; // 加速减速}if ((int)(Random.value * 1000) % 3 != 0){Tmp += -0.25f; // 转弯}if ((int)(Random.value * 1000) % 3 != 1){Tmp += 0.25f; // 转弯}if ((int)(Random.value * 1000) % 3 == 0){transform.Rotate(0, 0, -1); // 爬升俯冲}if ((int)(Random.value * 1000) % 3 == 1){transform.Rotate(0, 0, 1); // 爬升俯冲}}else{transform.Rotate(0, Tmp, 0);}} }
三、脚本挂载
对了,Box Collider或者其它碰撞体一定要有,后面射线检测有大用处!
四、效果展示
动图上传不了,只能这样了。
当然,如果你有疑问或代码有问题,还原留言。