5
0

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でドアを作りたい (C#でゴリゴリ)

Posted at

僕はUnityのAnimationを全く使いこなせないのでC#を使います。

作りたいドア

  • ある程度ドアに近づいてFキーを押すとドアが開く。
  • もう一度Fキーを押すとドアが閉じる。
  • ドアから離れたらFキーを押しても何も反応しなくなる

1. GUIでドアを作る

Cubeをドアの形にして、ただそれを回すだけだと中心を軸に回ってしまうので、空要素の中にドアを入れて、空要素の軸をドアの端に設定して空要素を回すことでUnity特有のPivot位置変えられない問題は解決します。
スクリーンショット 2020-06-14 15.07.39.jpg

2. C#で回す

今回は引き戸を作ります。

using System.Collections;
using UnityEngine;

public class Door_Controller : MonoBehaviour {
    public bool isOpened = false;
    public bool isEnter = false;

    void Update () {
        if (Input.GetKeyDown (KeyCode.F)) {
            if (isEnter && !isOpened) {
                transform.Rotate (0, 90, 0);
                isOpened = true;
            } else if (isEnter && isOpened) {
                transform.Rotate (0, -90, 0);
                isOpened = false;
            }
        }
    }

    private void OnTriggerStay (Collider collider) {
        if (collider.gameObject.tag == "Player") {
            isEnter = true;
        }
    }
    private void OnTriggerExit (Collider collider) {
        if (collider.gameObject.tag == "Player") {
            isEnter = false;
        }
    }
}

僕が書いたコードなので難しいことは何一つありません。

3. コンポーネントを追加して完成...

さっきの空要素に上のコードを追加して...
スクリーンショット 2020-06-14 15.22.21.jpg

実行すればちゃんと動くはず。
スクリーンショット 2020-06-14 15.26.52.png

実行!!
スクリーンショット 2020-06-14 11.12.59.png

!!!!!....??

ただY軸を回転させただけなのになぜかサイズがおかしなことに...

4. 空要素を一度ルートディレクトリに戻す

半日かけて原因を追及したところ、どうやら最初にドアを作る作業をネストの中で行うと、サイズが親要素比べの値なので回転するだけでバグって変なことになるらしいです。

こうなってたのを
スクリーンショット 2020-06-14 11.11.54.png
こうすると...
スクリーンショット 2020-06-14 15.33.46.png
頼む...
スクリーンショット 2020-06-14 15.35.37.png

動いた!


このネスト問題はググっても全然出て来なかったのが1番の罠だったので参考になれば幸いです。

5
0
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
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?