如何让 android 在 waypoints 之间随机移动?
How can I make the android to mvoe between the waypoints randomly?
既然 android 也应该在空中飞行或移动,我想我也应该使用物理学?不确定。
我添加了一些球体作为 waypoints,我希望 android 在它们之间随机移动,包括随机移动范围和旋转速度。例如1-10范围随机移动和旋转速度。
现在当我在 运行 游戏时它做了什么 NAVI (1) 只是循环移动 none 停在小区域不知道为什么,但它在球体。
这个想法是让 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;
}
}
你可以这样做。
//for example you've got 5 waypoints
currentWaypoint = Random.Range(1, 5);
希望对您有所帮助
你永远不会改变currentWP
。这意味着在每一帧,你都在向同一个导航点旋转并将机器人移回它。
只有当机器人到达时,您才需要更改当前的 WP。在目标导航点和机器人之间使用 OnTrigger。
既然 android 也应该在空中飞行或移动,我想我也应该使用物理学?不确定。
我添加了一些球体作为 waypoints,我希望 android 在它们之间随机移动,包括随机移动范围和旋转速度。例如1-10范围随机移动和旋转速度。
现在当我在 运行 游戏时它做了什么 NAVI (1) 只是循环移动 none 停在小区域不知道为什么,但它在球体。
这个想法是让 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;
}
}
你可以这样做。
//for example you've got 5 waypoints
currentWaypoint = Random.Range(1, 5);
希望对您有所帮助
你永远不会改变currentWP
。这意味着在每一帧,你都在向同一个导航点旋转并将机器人移回它。
只有当机器人到达时,您才需要更改当前的 WP。在目标导航点和机器人之间使用 OnTrigger。