1
2

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 3 years have passed since last update.

【UNITY 逆引き備忘録】キャラクターを動かす(Rigitbody.velocity)

Last updated at Posted at 2020-10-20

#はじめに

本記事では、Unityでキャラクターを動かすまでの手順を備忘録として残す。
移動方法はいくつかあるが、今回はRigitbodyのvelocityを利用する。
手順通りに進めると、以下のようなものができあがる。

↑:前進
↓:後退
←:左回転
→:右回転
カメラがキャラクターを追従

#Rigitbody.velocityによる移動
Rigitbodyのvelocity(速度)を直接書き換えることで移動する

######メリット

物理演算が適用される
一定の速度で移動するので扱いやすい
単調なゲームに向いている

######デメリット

質量や重力を考慮していないので挙動が非現実的
リアルな動作を追求したい場合は向かない

#手順
######0.前準備

Cube等で床を作り、ColliderをAdd Componentする
(Cube等をCreateした場合、Colliderはデフォルトでセットされている)

######1.キャラクターを設置

キャラクターを用意する(めんどくさければとりあえずCubeでもOK)
メインカメラで見える位置に設置する

######2.RigitBodyを追加

キャラクターにRigitBodyをAdd Compornentする
Use Gravity  ☑
Is Kinematic ☐
※再生してキャラクターが床をすり抜けて落ちれば成功

######3.Colliderを追加

キャラクターにColliderをAdd Compornentする
キャラクターと同じくらいの大きさを設定する
Is Trigger  ☐
※再生してキャラクターが床をすり抜けなくなれば成功

######4.スクリプトを追加

キャラクターに下記スクリプトをAdd Compornentする
InspectorからspeedとrotateSpeedを設定する
※再生してキャラクターを操作できれば成功

    public float speed;
    public float rotateSpeed;

    private Transform tr;
    private Rigidbody rb;
    private Vector3 charactorForward;
    private Vector3 moveVector;
    private float vertical;
    private float horizontal;

    void Start()
    {
        tr = this.transform;
        rb = GetComponent<Rigidbody>();
    }

    private void FixedUpdate()
    {
     //上下の入力
        vertical = Input.GetAxis("Vertical");
     //左右の入力
        horizontal = Input.GetAxis("Horizontal");
     
        //回転
        if (horizontal > 0)
            transform.Rotate(0, rotateSpeed * Time.fixedDeltaTime, 0);
        if (horizontal < 0)
            transform.Rotate(0, (-1) * rotateSpeed * Time.fixedDeltaTime, 0);

        //移動ベクトル
        moveVector = tr.forward * vertical * Time.fixedDeltaTime * speed; 
        //移動
        rb.velocity = new Vector3(moveVector.x, rb.velocity.y, moveVector.z);
    }

######5.カメラを追従させる

メインカメラをキャラクターの子オブジェクトにする
※再生してカメラが3人称視点になっていれば成功

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?