私はマウス指向のゲームの基本的なコントロールを作っています。カメラをプレイヤーに追従させ、コサインの法則を使って角度を見つけるためにカメラを回転させたいと思います。ここに私のコードは次のとおりです。ユニティ:回転するコサインの法則を使ったカメラ
//Move Camera
camX = player.transform.position.x;
camY = 15.5f;
camZ = player.transform.position.z;
//Rotate Camera
rotTriA = player.transform.position.x;
rotTriB = player.transform.position.z;
rotTriC = Mathf.Sqrt((rotTriA * rotTriA) + (rotTriB + rotTriB));
if(rotTriA > 0 && rotTriB > 0)
{
getAngle = (Mathf.Acos(((rotTriA * rotTriA)
+ (rotTriB * rotTriB)
- (rotTriC * rotTriC))
/(2 * (rotTriA) * (rotTriB))) * Mathf.Rad2Deg);
}
else if(rotTriA > 0 && rotTriB < 0)
{
getAngle = (Mathf.Acos(((rotTriA * rotTriA)
+ (rotTriB * rotTriB)
- (rotTriC * rotTriC))
/(2 * (rotTriA) * (rotTriB))) * Mathf.Rad2Deg) + 90;
}
else if(rotTriA < 0 && rotTriB < 0)
{
getAngle = (Mathf.Acos(((rotTriA * rotTriA)
+ (rotTriB * rotTriB)
- (rotTriC * rotTriC))
/(2 * (rotTriA) * (rotTriB))) * Mathf.Rad2Deg) + 180;
}
else if(rotTriA < 0 && rotTriB > 0)
{
getAngle = (Mathf.Acos(((rotTriA * rotTriA)
+ (rotTriB * rotTriB)
- (rotTriC * rotTriC))
/(2 * (rotTriA) * (rotTriB))) * Mathf.Rad2Deg) + 270;
}
else if(rotTriA == 0 && rotTriB > 0)
{
getAngle = 90;
}
else if(rotTriA == 0 && rotTriB < 0)
{
getAngle = 270;
}
else if(rotTriA > 0 && rotTriB == 0)
{
getAngle = 0;
}
else if(rotTriA < 0 && rotTriB == 0)
{
getAngle = 180;
}
else
{
getAngle = 0;
}
Debug.Log(getAngle);
if (camZ < 0)
{
camZ = player.transform.position.z + 10.5f;
transform.eulerAngles = new Vector3(135f, getAngle, 0.0f);
}
else
{
camZ = player.transform.position.z - 10.5f;
transform.eulerAngles = new Vector3(45f, getAngle, 0.0f);
}
camZ = player.transform.position.z - 15.5f;
cam = new Vector3(-camX, camY, camZ);
mainCamera.transform.position = cam;
私はカメラがプレイヤーに追従させる方法を知っているが、私はそれが怖がらずにプレイヤーの周りを回転するカメラを作る方法がわかりません。
私はプレイヤーを移動するためにレイキャスティングを使用していますので、私はマウスをアリーナの外に移動すると動きが登録されません。値が得られるので余弦の法則を行っていない可能性があります400まで(サークルが360度であれば可能ではありません)。
あなたはこれを行うためにこれをやっていますか?カメラをオブジェクトの周りに回転させる簡単な方法を探しているのであれば、いくつかの追加や基本的なUnity APIを使って行うことができます。 – Foggzie
@Foggzie私は簡単な方法を考えることができませんでした。 –
@Foggzie私はちょうどそれがプレーヤーの周りを回転したい。 –