パソコンの一人称視点ゲームらしくマウスで視点変更できるようにします。
参考URL:https://mslgt.hatenablog.com/entry/2017/02/18/020630
上の手法ではクリックしている間しかカメラの移動ができないので、常にマウスの位置を追う実装にします。
private Vector3 lastMousePosition;
private Vector3 newAngle = new Vector3(0, 0, 0);
void Start() {
newAngle = this.transform.localEulerAngles;
lastMousePosition = Input.mousePosition;
}
void Update() {
newAngle.y += (Input.mousePosition.x - lastMousePosition.x) * y_rotate * x_reverce;
newAngle.x -= (Input.mousePosition.y - lastMousePosition.y) * x_rotate * y_reverce;
this.gameObject.transform.localEulerAngles = newAngle;
lastMousePosition = Input.mousePosition;
}
x_rotate, y_rotateはマウスによるカメラ回転の感度を、x_reverce, y_reverceは設定による反転(マウスを上に移動したら下に向くようにする)のための変数。
しかし、この実装ではマウスポインタがはじめから中央に無いと操作に違和感が出るかもしれません。(要検討)
また、一人称視点でカメラを回転させた時、カメラが壁を貫通して向こう側が見えるので、カメラが壁を貫通しないようにします。
カメラはプレイヤーと同じx,z座標に浮かんでいるので、プレイヤーのColliderの当たり判定を大きくしてプレイヤーが一定以上壁に近づかないようにするとカメラも壁にめり込むことはなくなりました。(もし、攻撃された時などの当たり判定は新しくそれ用のColliderを作ればOKのはず)