帮我写一段能用鼠标控制摄像机旋转并且会跟随父物移动体轻微晃动的代码
时间: 2024-10-14 12:17:07 浏览: 20
VB编程源代码 33用鼠标旋转立方体
在Unity中,为了实现鼠标控制摄像机的旋转并跟随其父物体(Parent Object)的移动,你可以使用`Mouse Look`功能配合`Transform`组件。下面是一个简单的示例代码,假设你有一个名为`MainCamera`的游戏对象作为摄像机,并且它已经被设置为其父物体的Child:
```csharp
using UnityEngine;
public class CameraController : MonoBehaviour
{
public Transform parentObject; // 父物体
private Vector3 smoothFollowOffset; // 平滑跟随偏移
void Update()
{
// 鼠标旋转
float mouseX = Input.GetAxis("Mouse X");
float mouseY = Input.GetAxis("Mouse Y");
Quaternion newRotation = Quaternion.AngleAxis(mouseX, Vector3.up) * Quaternion.AngleAxis(mouseY, Vector3.right);
transform.localRotation = Quaternion.Lerp(transform.localRotation, newRotation, 0.1f); // 0.1f是平滑度,越小旋转越平滑
// 跟随父物体
if (parentObject != null)
{
Vector3 offsetFromParent = transform.position - parentObject.position;
Vector3 smoothedOffset = Vector3.Lerp(smoothFollowOffset, offsetFromParent, Time.deltaTime * 5f); // 5f是跟随响应速度
transform.position = parentObject.position + smoothedOffset;
smoothFollowOffset = smoothedOffset; // 更新平滑跟随偏移
}
}
}
```
这段代码中,`Input.GetAxis`获取鼠标的横纵轴输入,`Lerp`函数用于实现平滑的旋转和位置变化。当鼠标移动时,摄像机的旋转会实时更新;同时,摄像机会跟随其父物体,但在跟随过程中有一定的时间延迟以达到平滑效果。
阅读全文