オブジェクトをドラッグした方向に回転させるには、Transform.Rotateを使用します。
以下の例では、ドラッグの方向にオブジェクトを回転させる方法を示しています。
using UnityEngine; using UnityEngine.EventSystems; public class RotationTest : MonoBehaviour, IDragHandler { [SerializeField] private Transform _target; [SerializeField] private float _speed = 1f; public void OnDrag(PointerEventData eventData) { _target.Rotate(Vector3.up, eventData.delta.x * -_speed); _target.Rotate(Vector3.right, eventData.delta.y * _speed); } }
しかし、一度回転させた後にさらに回転させると、回転後の軸を考慮していないため、奇妙な回転が発生します。
これを正しく考慮するには、次のようにSpace.Worldを使用します。
_target.Rotate(Vector3.up, eventData.delta.x * -_speed, Space.World); _target.Rotate(Vector3.right, eventData.delta.y * _speed, Space.World);
これにより、回転が正しく行われます。