这个脚本使其旋转,但也使对象远离,即使我停止旋转,对象也会继续远离。检查器中的转速设置为500。该对象具有附加的长方体碰撞器和刚体组件。
我希望每次我按住鼠标并旋转鼠标移动鼠标时,它都能平稳地旋转,但对象会在不改变位置的情况下原地旋转。
我还想知道,如果对象有刚体组件,那么它必须在FixedUpdate中旋转,或者我也可以在Update中使其旋转,在Update中它将没有物理?
using UnityEngine;
public class RotateDice : MonoBehaviour
{
public float rotateSpeed = 500.0f;
public bool isRotating = true;
private Rigidbody rb;
private Quaternion targetRotation;
void Start()
{
rb = GetComponent<Rigidbody>();
targetRotation = transform.rotation; // Initialize to current rotation
}
void Update()
{
// Handle input in Update to be responsive
if (isRotating && Input.GetMouseButton(0))
{
float xRotation = Input.GetAxis("Mouse X") * rotateSpeed * Time.deltaTime;
float yRotation = -Input.GetAxis("Mouse Y") * rotateSpeed * Time.deltaTime;
Quaternion xQuaternion = Quaternion.AngleAxis(xRotation, Vector3.up);
Quaternion yQuaternion = Quaternion.AngleAxis(yRotation, Vector3.right);
targetRotation *= xQuaternion * yQuaternion;
}
}
void FixedUpdate()
{
// Perform rotation in FixedUpdate
if (rb != null)
{
rb.MoveRotation(targetRotation);
}
}
}
检查器设置。