##まず
FPSのゲームを作る際,
キー入力で,90度左や右にキャラクターの向きとカメラ(視点)が回転するようにしたいことってありませんか?
しかし,回転が一瞬で行われるようでは,
・操作している側はどっちの方向に回転したのか?
・そもそも回転しているように見えない(どちらかと言うとワープしたように見えてしまう)
といったような見た目上の問題が発生することがただあります.
今回はこの回転を動的(?)に行うことによって,
操作している側が回転しているんだなとわかるようにしてあげたいと思います.
最終的な回転の動きは下のような感じになります.
##コード
回転の部分のコード(抜粋)は以下のようになります.
このコードではy軸を主軸として回転させています.
playerLeftButton
とplayerRightButton
には回転させるための押すキーを割り当ててください.
turn.cs
using System;
using UnityEngine;
using System.Collections;
public class WallOfFireDestroy : MonoBehaviour
{
int wantRotation;
public float turnTime = 1.0;
void Start()
{
wantRotation = transform.rotation.eulerAngles.y;
}
void Update()
{
// 左右のキー入力でキャラクターを90度旋回する
if (Input.GetKeyDown(playerLeftButton))
{
wantRotation -= 90f;
}
if (Input.GetKeyDown(playerRightButton))
{
wantRotation += 90;
}
Quaternion want = Quaternion.AngleAxis(wantRotation, new Vector3(0, 1, 0));
transform.rotation = Quaternion.Lerp(transform.rotation, want, Time.deltaTime / turnTime);
}
}
turnTime
が動的に回転させている時間になります.