AIプログラムとかUnityゲーム開発について

探索や学習などを活用したAI系ゲームを作りたいと思います。

TowerDefenseを作ってみる

TowerDefenseを作ってみようと思います。

まずは、マウスでクリックした位置に砲台をおける。
敵は一体のみで、左から右へ進んでくる
砲台を置いておくと、敵を攻撃してくれる
敵を逃して右へ抜けるとライフが一つ減る。
といった感じです
f:id:yasu9780:20150509011506p:plain

マウスでクリックした位置に砲台を置くというのは
色々検索してみましたが、マウス座標は二次元、それをカメラを考慮して
ワールド座標系に変換するのですが、
カメラが上から見た構図ならいいんですが、俯瞰でやや斜めだと
ネットでよくあるサンプルはづれてしまうのでダメでした。

苦肉の策で、先に砲台をおける場所にPlaneをおいておいて、
マウスクリックでRaycastしてPlaneを特定して、その位置に砲台を置くやり方をやってみました。
ワールド座標系への変換も、カメラと大地との角度はわかってるので、
投影を計算すれば大丈夫と思うんですが、なぜかそういうサンプルが見つかりませんでした。

http://www40.atwiki.jp/spellbound/pages/1416.html
例えばここのサンプルだと、たしかにカメラとの距離を設定すれば
クリックした位置の三次元座標はとれますが、それは地面から浮いてるんです。
クリックした位置で、かつ、地面上の三次元座標が欲しいのですが

planeをしきつめておくやり方でうまくできるので、こっちで行きます。
確実に位置が指定できますし。


タンクは砲台をchildにしてるので、childのみを敵に向かって回転させつつ、
タイマーで弾を撃ってます。実際はホーミングミサイルみたいなもので、打てば確実に当たります。

いくつかTowerDefenseを実際に遊んでみましたが、
攻撃砲台の種類としては、

  • 通常攻撃(射程・威力が違う)
  • 範囲攻撃
  • 敵をつきぬけるレーザー攻撃

その他のユニットは、

  • 資源採掘プラント
  • 敵を遅くするビームを出す

といったものがありました。

敵に関しては(順番に来るのでWaveと表現されている)

  • 足が早いもの
  • 破壊されると分裂するもの
  • ボス(大きく、HPが高い)

みたいな感じですね。

SF的には遅くするビームですが、魔法的には遅くする呪文。
クラッシュ・オブ・クランも、レーザー攻撃以外はみなありますね。
あっちには、敵を止める魔法や、味方が壁を飛び越える魔法があったり
あと、空軍がありますね。バルーンとかドラゴンとか。対空砲もありますし
レイヤーが2つあるみたいな感じで。

敵は道を歩いていくるだけで味方を攻撃しないのが多いと思いますが、
DMMの千年戦争アイギスは攻撃してくるみたいですね(これは遊んでない)




こういう3Dなタワーディフェンスが作れたら楽しそうですね
https://www.assetstore.unity3d.com/en/#!/content/3933

https://d2ujflorbtfzji.cloudfront.net/package-screenshot/5f0f03a9-4203-483e-8fc7-a7f618877850_scaled.jpg