タワーディフェンスが作りたい:その2 〜メニューからバリケードを配置してみる〜
はい、前回に引き続きタワーディフェンスの今回は配置するところ。
前回のと合わせて配置するところのWebPlayer版です。
軽くなるようにオブジェクトなどはすべてとっぱらっています。
こんな感じ
Pキーまたはマウスホイールクリックでメニューが出るのでそこから建設->バリケードで配置できます。
shaderまわりがよくわからず演出がしょぼい・・・orz
やっていることは
##位置指定
- プレイヤーから一定範囲内にしか移動させない。
- 何かにぶつかっている場合はおけない(赤色)
- おけるときはとりあえず青色
- ホイールクリックまたはPキーで向き指定へ
##向き指定 位置が決め終わったら向きを決めます
- マウスの位置から向く方向を指定
- 何かにぶつかっている場合はおけない(赤色)
- おけるときはとりあえず青色
- 青色のときにホイールクリックまたはPキーで建て始める
です。
メニューからBuildPositionが呼ばれコルーチンで配置を開始します。
とくに難しいことはなくカメラだけ上からの見下ろしになるようにTweenで処理しています。
ちなみにカメラはPlayerの下にカメラ操作用のPlayerCameraParentがあり、その下にカメラがあります。
iTweenではこのカメラの親の方を動かしています。
PlayerCameraParentの中心点はキャラクターの中心位置にあるのでそこから回転させれば簡単に距離感を保ったまま真上にカメラを持っていけます。
こちらが位置を選ぶときのコルーチンです
位置を選んでいるときはトラップのColliderを一度isTriggerにチェックすることでぶつかっても移動しないようにしています。
ぶつかっているときにトラップの色を変えているのはトラップの方のクラスでやっています。
そして確定されたらBuildTrapRotationのコルーチンで今度は回転させます
こちらが回転のコルーチンです。
途中でキャンセルされた場合や、配置できないまま確定された場合はCancelBuildが呼ばれ配置を終了します。
こんな感じです
あ、今回は説明しませんが、トラップの色を変えるところの注意点として、
OnTriggerStayでぶつかっているときという判定をとるのですが、ぶつかっていない場合というのは
UpdateでやるのではなくFixedUpdateのほうでやります。
これはUnityが
FixedUpdate
OnTrigger系
OnCollision系
Updateの順番で呼ぶからです。
なのでFixedUpdateでflgをtrueにし、
OnTriggerStayでぶつかっていたらflgをfalseにし
Updateでflgによってオブジェクトの色を変えるという処理をしています。
トラップ周りの処理はまた今度^^