P5.エアホッケー
要らねーと思うけど、解説無しで出来上がりのノードトゥリーを全部貼っておく。いらねーと思うけど・・・
敵マレットにも専用のノードトゥリーを作ってパックを自動で打ち返すように動いてもらおう。ただし、俺のスクリプトはアホアホなので大した動きは出来ないが、、、。 まーなんだかんだで、このシリーズも最終回だ。
反射ベクトルとして出したパックの "myDir" に自マレットの "myDir"(これから作る)を加えれば、マレットの勢いがパックにのり、より自然な反射スピードになるはず。さあ、自マレットにも "myDir" をセットプロパティー!
今回は、後半部分、反射ベクトルを出す。前回も述べたが、反射ベクトルに関しては事前にググっておくことをお勧めする。俺は、ググって一番最初に出て来るページを3回読んでやっと分かった系だからな。
パックをマレットで跳ね返すには、「A.パックがマレットに接触したか」を調べ、接触してたら「B.反射させる方向と距離(反射ベクトル)を割り出し」て移動させればいい。物理を有効にしてればこんなのは自動でやってくれるんだが、今回は "NO 物理" なので自…
マレットをマウス操作で動かすぞ。ゲーム画面上でマウスカーソルがあるところにマレットを移動させるのだ。これでやっとゲームらしくなる~。だがそれには画面上のマウス位置が3Dゲーム空間上のどこにあるのか、その位置を把握しないとイケナイのだが・・・…
パックが出る時、いつも同じ方向だとツマンナイのでランダム化する。(Random (Float)、Random (Integer)、・・・)
10点取って勝ったらゲームが固まる。今のところ、このゲームはそんなゲームだ。さっさとリトライ出来るようにするぜ。まー、やり方はクソ簡単だ。点数を0点に戻して試合中のフラグを立てなおしてやればイイだけ。まじ、クソ簡単。あとおまけでMergeノードも…
パックの初期挙動が単調なうちにゲームオーバー処理(どっちか10点取った方が勝ち)を追加しておきたい。パックが出ていく方向がランダムになっちゃうと、意図的にゴールさせて確認出来なくなるからな。今のうちだ。
得点処理をする。似たようなことは「玉転がし」でもやっているので、もうまったく難しくない。ミニゲーム(クソゲー)を2~3コ作るってことがいかに有意義なのことなのか、実感だな。
色つながりということで、ノードピン(ソケット)の色の話。もっと前にやっておくべきだったかもなー。あー、もっと前にやってたことにしちゃおうかな。日付を変えて再投稿すればいいだけだし。。。
処理をイベントでガンガン飛ばしているので、ちょっと時間が経つと、「このイベントはどこから来てるんだろ?」とか「このイベントはどこへ行くんだか?」といったことが起こるはず。そうならない様、ノードに色でも付けておこうか。
実は「パックを出すにはスペースキーを押す」ってことをプレイヤーに知らせないと、永遠にゲーム画面を眺めているだけになっちゃう。だから、上の図のようにパックが無い時は、画面中央位に「PUSH SPACE KEY」と表示させる。コレで分かるだろ。で、ただ表示…
UI、やっておくか。キャンバスにテキスト置くだけだし。で、UI では Trait はオブジェクトに付けるんじゃなくて、シーンに付けること。これが注意点だったよな。
前回最後の所で言った、「シーンを元から消す」って言うのがどういうことか、具体的に確認する。屁理屈なんか要らないんだ。目で見て分かるようにするぜ。カモン Debug Console!
ゴールの横幅は10m(のはず)。だからパックが自陣又は敵陣の壁に当たった時、「-4 ≦ パックのx位置 ≦ 4」なら跳ね返すんじゃなくてゴールとすればいいよね。パックの半径考えるから、±5じゃなくて±4ね。(ま、どっちでもいいけど)
1個だけ出すようにするのは簡単。スポーンした時にフラグを立ててやって、そのフラグが立ってる時はもうスポーンさせないようにすればいいダケ。で、自陣、又は敵陣にゴールした時にこのフラグを引っ込めてやればまた出るようになるって作戦だ。
スペースキーを押したら、中央にパックが出るようにする。やり方としては、もっと簡単な方法があるけど、あえてパックをスポーンさせる方法でやる。Armory にあるスポーン用のノードは2種類。Spawn ObjectとSpawn Scene。
壁の所に来たら跳ね返るような感じに動くパックを登場させる。物理でやるならApply Impulseや、Apply Forceだが今回は使わない。普通にオブジェクトを動かす場合はTranslate ObjectとTimeノードの合わせ技を使う。普通は、こっちの方を先に覚えるかな。
ステージと言うか、エアホッケーの台(テーブル)を作る。これは Cube オブジェクトを適当に追加して、適当に移動させて、適当に拡大すればいいだけなので、何の問題もないと思う。ただ、今回のゲーム作成はちょっとメンドクサイ。何故なら、、、
第2弾のゲームを作ってたんだが、なんか意外と時間がかかってしまったわい。まぁえーわ。今度のゲームは「エアホッケー」。UE4 で作り方の解説を途中放棄したやつの Armory Engine 版だ。(クソゲーなのは一緒。) で、解説は「玉転がし」で使わなかったノー…