由于机器人应该在空中飞行或移动,我想我也应该使用物理?不确定。
我添加了一些球体作为航路点,我希望机器人在它们之间随机移动,包括随机的移动范围和旋转速度。例如1-10移动和旋转的随机速度范围。
现在我在运行游戏时所做的事情,NAVI(1)只是在小范围内移动,不确定为什么,但它在球体之间没有平稳移动。
这个想法是让NAVI机器人的行为不正常。
这是NAVI(1)及其检查员的屏幕截图:
此屏幕截图是Waypoints附加的Waypoints脚本:
这是Waypoints脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Waypoints : MonoBehaviour
{
public Transform objectToMove;
public float moveSpeed = 3.0f;
public float rotationSpeed = 3.0f;
public GameObject[] waypoints;
public int currentWP;
private void Awake()
{
}
private void Start()
{
currentWP = 0;
}
private void Update()
{
if (waypoints.Length == 0) return;
var lookPos = waypoints[currentWP].transform.position - objectToMove.position;
lookPos.y = 0;
var rotation = Quaternion.LookRotation(lookPos);
objectToMove.rotation = Quaternion.Slerp(objectToMove.rotation, rotation, Time.deltaTime * rotationSpeed);
objectToMove.position += objectToMove.forward * moveSpeed * Time.deltaTime;
}
}
答案 0 :(得分:2)
你永远不会改变currentWP
。这意味着在每一帧,你都会朝着同一个导航点旋转并将机器人移回它。
只有在机器人到达时才需要更改当前的WP。在目标导航点和机器人之间使用OnTrigger。
答案 1 :(得分:0)
你可以这样做。
//for example you've got 5 waypoints
currentWaypoint = Random.Range(1, 5);
希望有所帮助