Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9360

Unityでドアを作りたい (C#でゴリゴリ)

$
0
0

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

作りたいドア

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

1. GUIでドアを作る

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

2. C#で回す

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

usingSystem.Collections;usingUnityEngine;publicclassDoor_Controller:MonoBehaviour{publicboolisOpened=false;publicboolisEnter=false;voidUpdate(){if(Input.GetKeyDown(KeyCode.F)){if(isEnter&&!isOpened){transform.Rotate(0,90,0);isOpened=true;}elseif(isEnter&&isOpened){transform.Rotate(0,-90,0);isOpened=false;}}}privatevoidOnTriggerStay(Collidercollider){if(collider.gameObject.tag=="Player"){isEnter=true;}}privatevoidOnTriggerExit(Collidercollider){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番の罠だったので参考になれば幸いです。


Viewing all articles
Browse latest Browse all 9360

Latest Images

Trending Articles