ここではスペースで回転しています。カメラを回すことはできますが、プレーヤーの回りを回ることはできません。カメラをプレーヤーの周りだけで回転させたい。マウスでカメラを回転させるにはどうすればいいですか?
using UnityEngine;
using System.Collections;
public class CameraMover : MonoBehaviour
{
public float speedH = 2.0f;
public float speedV = 2.0f;
private float yaw = 0.0f;
private float pitch = 0.0f;
public Transform playerTransform;
public Transform mainCameraTransform = null;
private Vector3 cameraOffset = Vector3.zero;
public float turnSpeed = 3;
void Start()
{
mainCameraTransform = Camera.main.transform;
//Get camera-player Transform Offset that will be used to move the camera
cameraOffset = mainCameraTransform.position - playerTransform.position;
}
void LateUpdate()
{
//Move the camera to the position of the playerTransform with the offset that was saved in the begining
mainCameraTransform.position = playerTransform.position + cameraOffset;
yaw += speedH * Input.GetAxis("Mouse X");
pitch -= speedV * Input.GetAxis("Mouse Y");
mainCameraTransform.eulerAngles = new Vector3(pitch, yaw, 0.0f);
}
}
私は今回転のためにオイラーアングルを使用しています。
プレーヤーを中心とするオブジェクトを作成し、そのオブジェクトに子として追加します。次に、カメラをプレーヤーの周りで回転させることは、親オブジェクトのローカル回転を変更することと同じくらい簡単です。 – Abion47
@ Abion47私は試しました:私のスクリプトと同じですが、行をmainCameraTransform.eulerAngles = new Vector3(pitch、yaw、0.0f)から変更しました。 To transform.parent.gameObject.transform.eulerAngles = new Vector3(ピッチ、ヨー、0.0f);しかし、それはカメラを回転させています。空のGameObject iは第三者のコントローラセンターに置かれていません。このスクリプトは、GameObjectの子であるメインカメラに添付されています。 –
オブジェクト自体にアタッチします。このアプローチでは、オブジェクトはマウスが実際に制御するものですが、カメラは乗り物のためだけに移動します。 – Abion47