6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unityでキャラクターの視点を動的に90度回転させる方法

Last updated at Posted at 2017-01-09

##まず
FPSのゲームを作る際,

キー入力で,90度左や右にキャラクターの向きとカメラ(視点)が回転するようにしたいことってありませんか?

しかし,回転が一瞬で行われるようでは,

・操作している側はどっちの方向に回転したのか?

・そもそも回転しているように見えない(どちらかと言うとワープしたように見えてしまう)

といったような見た目上の問題が発生することがただあります.

今回はこの回転を動的(?)に行うことによって,

操作している側が回転しているんだなとわかるようにしてあげたいと思います.

最終的な回転の動きは下のような感じになります.

##コード
回転の部分のコード(抜粋)は以下のようになります.

このコードではy軸を主軸として回転させています.
playerLeftButtonplayerRightButtonには回転させるための押すキーを割り当ててください.

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動的に回転させている時間になります.

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?