UnityでUnityエディタのようなカメラを作る方法

基本的にカメラはVirtualCameraを使用したほうが後で楽になる場合が多い 3rdパーソンなどほかにもカメラ機能があるが最初は実装が楽で操作が似ていてもあとから大変な目に遭う場合が多い。ほかにも自由度が高く、他のアセットなどに応用が効く場合が多い


移動の基本 wasdなどで使う カメラの向きに応じて移動させる
transform.Translate(Camera.main.transform.forward*Time.DeltaTime*speed*player.GetAxis("")); 

 


GetAxisをマウスのスクロールにすると移動する

 

 


CinemacineはVitualCameraを使用 AimにはPov BodyはTransposerを使用


RewiredにはBridgeが必要、パッケージにCinemacineをインストールすること

 


cinemacineObj.GetCinemachineComponent(CinemachineCore.Stage.Aim).GetComponent<CinemachinePOV>()
pov.m_HorizontalAxis.m_MaxSpeed=回転スピード
pov.m_VerticalAxis.m_MaxSpeed=回転スピーチ


回転スピードを0にすると回転しなくなる これを利用して


if(player.GetButton("MouseRight"))とすると右クリックで回転し、eleseで0にすると回転しない、エディタのカメラと似たような作りにできる


水平移動を実装する。CinemacineのOffsetを使うのもいいが、あれはずれていくだけでリセット処理が大変だし使いづらい。


if(player.GetButton(weelClick){
mainCineCamera.Transform.Translate(Camera.main.transform.up*Time.deltaTime*speed*cameraY);


mainCineCamera.Transform.Translate(Camera.main.transform.right*Time.deltaTime*speed*cameraX);

}


カメラズーム機能を実装する、ただしUIでもスクロールしたい場合一工夫必要である


処理の前にUI上にカーソルがある場合無視するように作ると楽
if(EventSystem.current.IsPointerOverGameObject()){
return;
}
mainCineCamera.transform.Translate(Camera.main.transform.forward*Time.deltaTime*scroolSpeed*player.GetAxis(“MouseScrool”));