ユーザーがx軸とy軸をクリックしてドラッグしてオブジェクトを回転できるようにする、非常に単純な3dモデルビューアを作成しようとしています。含まれているコード サンプルで直面している問題は、たとえば y 軸を中心に何かを回転させてから、x 軸を中心に回転しようとすると、オブジェクトがオブジェクトの x 軸を中心に回転するのではなく、オブジェクトのx 軸を中心に回転することです。カメラの視点からの x 軸。
2 つのモーションではありますが、z 軸に沿って何かを回転させることを効果的にシミュレートしようとしています。
public Transform obj;
private Vector3 screenPoint;
private Vector3 offset;
//public float minX = 270.0f;
//public float maxX = 360.0f;
//public float minY = -90.0f;
//public float maxY = 90.0f;
public float sensX = 100.0f;
public float sensY = 100.0f;
float rotationY = 0.0f;
float rotationX = 0.0f;
float posX = 0.0f;
float posY = 0.0f;
void Update() {
if (Input.GetMouseButton(0)) {
rotationX += Input.GetAxis("Mouse X") * sensX * Time.deltaTime;
//rotationX = Mathf.Clamp(rotationX, minX, maxX);
rotationY += Input.GetAxis("Mouse Y") * sensY * Time.deltaTime;
//rotationY = Mathf.Clamp(rotationY, minY, maxY);
Quaternion q = Quaternion.Euler(rotationY, -rotationX, 0);
transform.rotation = q;
}
if (Input.GetMouseButton(1)) {
posX += Input.GetAxis("Mouse X") * 25.0f * Time.deltaTime;
posY += Input.GetAxis("Mouse Y") * 25.0f * Time.deltaTime;
transform.position = new Vector3(posX, posY, 0);
}
}