unity目标点进行先水平后竖直的运动,父物体跟随目标点水平转动,子物体跟随目标点竖直转动的代码
时间: 2023-06-19 07:08:21 浏览: 98
可以使用Quaternion.LookRotation()方法和Transform.Rotate()方法来实现父物体和子物体的跟随旋转。
先水平后竖直的运动可以使用Vector3.Lerp()方法来实现,具体代码如下:
```csharp
public Transform target; // 目标点
public float horizontalSpeed; // 水平移动速度
public float verticalSpeed; // 竖直移动速度
public Transform parentObject; // 父物体
public Transform childObject; // 子物体
private float horizontalDistance; // 到目标点的水平距离
private float verticalDistance; // 到目标点的竖直距离
void Update()
{
// 计算到目标点的水平距离和竖直距离
horizontalDistance = Vector3.Distance(new Vector3(transform.position.x, 0, transform.position.z), new Vector3(target.position.x, 0, target.position.z));
verticalDistance = target.position.y - transform.position.y;
// 计算水平移动的目标位置
Vector3 horizontalTargetPosition = Vector3.Lerp(transform.position, new Vector3(target.position.x, transform.position.y, target.position.z), horizontalSpeed * Time.deltaTime / horizontalDistance);
// 计算竖直移动的目标位置
Vector3 verticalTargetPosition = Vector3.Lerp(transform.position, new Vector3(transform.position.x, target.position.y, transform.position.z), verticalSpeed * Time.deltaTime / verticalDistance);
// 移动到目标位置
transform.position = new Vector3(horizontalTargetPosition.x, verticalTargetPosition.y, horizontalTargetPosition.z);
// 计算父物体和子物体的旋转角度
Quaternion horizontalRotation = Quaternion.LookRotation(target.position - parentObject.position, Vector3.up);
Quaternion verticalRotation = Quaternion.LookRotation(target.position - childObject.position, parentObject.right);
// 旋转父物体和子物体
parentObject.rotation = Quaternion.RotateTowards(parentObject.rotation, horizontalRotation, Time.deltaTime * 1000);
childObject.rotation = Quaternion.RotateTowards(childObject.rotation, verticalRotation, Time.deltaTime * 1000);
}
```
其中,horizontalSpeed和verticalSpeed分别表示水平移动速度和竖直移动速度,parentObject和childObject分别表示父物体和子物体。在Update()方法中,首先计算到目标点的水平距离和竖直距离,然后使用Vector3.Lerp()方法计算水平移动的目标位置和竖直移动的目标位置,并移动到目标位置。接着,使用Quaternion.LookRotation()方法计算父物体和子物体的旋转角度,并使用Transform.Rotate()方法旋转父物体和子物体。注意,由于父物体的旋转会影响子物体的旋转,所以在计算子物体的旋转角度时,需要使用父物体的right向量作为参考系。
阅读全文