- Код: Выделить всё
using UnityEngine;
using System;
using System.Text;
[AddComponentMenu("Camera-Control/Mouse Rotate")]
public class MouseRotate : MonoBehaviour
{
public bool rotate = false;
public float sensitivityX = 15F;
public float sensitivityY = 15F;
public float minimumX = -360F;
public float maximumX = 360F;
public float minimumY = -360F;
public float maximumY = 360F;
float rotationX = 0F;
float rotationY = 0F;
Quaternion originalRotation;
void OnMouseDown()
{
if (!rotate)
rotate = true;
else
{
rotate = false;
transform.eulerAngles = new Vector3(0, 0, 0);
}
}
void FixedUpdate()
{
if (rotate)
{
rotationX += Input.GetAxis("Mouse X") * sensitivityX;
rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
rotationX = ClampAngle(rotationX, minimumX, maximumX);
rotationY = ClampAngle(rotationY, minimumY, maximumY);
Quaternion xQuaternion = Quaternion.AngleAxis(rotationX, Vector3.up);
Quaternion yQuaternion = Quaternion.AngleAxis(rotationY, Vector3.left);
rigidbody.MoveRotation(originalRotation * xQuaternion * yQuaternion);
}
}
void Start()
{
// Make the rigid body not change rotation
if (rigidbody)
rigidbody.freezeRotation = true;
originalRotation = transform.rotation;
}
public static float ClampAngle(float angle, float min, float max)
{
if (angle < -360F)
angle += 360F;
if (angle > 360F)
angle -= 360F;
return Mathf.Clamp(angle, min, max);
}
}
прикреплён к родителю, на родителе стоит BoxCollider, но проблема в том, что чилды вращаются из нижней левой точки, а мне надо, чтобы вращались из центра, реально ли это сделать?