Ball】Tweetnoteで管理人イシゲーのゲームの思い出記事を100円で公開しました。今回は今までよりもゲームらしいものを作ります。タイミング良く画面をタッチすることで最適の角度と力を決めてより遠くにボールを目指すゲームです。Ball」にしました。■まとめ■ボールを飛ばすまずSphereとPlaneを出します。Plane位置はこの通りにしてください。白と白で見にくいならばMaterialをアタッチしてそれぞれ色を変えましょう。Material出したらInspectorのAlbedoから色を変えてください。次はスクリプトを作ります。C#のShotスクリプトを作ってください。Input.GetMouseButtonDown(0)は左クリックに反応しますが、右クリックは(1)、真ん中クリックは(2)になります。AddForceはRigidbodyに力をかけて動かします。したら、1.SphereのComponentにRigidbody追加。2.Sphereにスクリプトをドラッグアンドドロップ。3.SphereのInspectorのShotのRigidbodyの欄にRigidbodyつけたSphereをドラッグ&ドロップ。4.thrustの空欄に加えたい力の数値を入力。これで一旦再生してみましょう。画面を左クリックしたら無事Sphereが前方に飛んだでしょうか。あとInspector/Transform/RotationのX軸の数値を変えることで飛ぶ角度を変えられます。次はCameraがSphereを追うCameraPosスクリプトを書きます。Cameraにドラッグ&ドロップしてください。再生した時にちゃんとSphereを追って行ったでしょうか?■角度を決められるようにする次は動く棒をタイミングよくクリックで止めてボールが飛ぶ角度を0.1~90度までの間で決定できるようにします。Imageを出してください。Image出したらInspectorからWidthを129、Heightを9にします。ColorそこからImageの色を替えられるので好きなものにしてください。Emptyを出します。これはゲーム上では見えず触れられもしないため、位置を取得したりスクリプトを入れておくのに便利です。EmptyこれをクリックするとHierarchyにGameObjectが現れます。次からが少々ややこしいのですが、1.GameObjectを同じHierarchyのCanvasにドラッグ&ドロップして子オブジェクトにする。2.ImageをGameObjectにドラッグ&ドロップして子オブジェクトにする。それからGameObjectとImageをそれぞれこのような位置にしてください。さあ再びShotスクリプトを開いてください。ここに角度を決めるコードを追加します。したらSphereのInspectorのスクリプトの欄に空欄ができるのでImageの親オブジェクトのGameObjectをドラッグ&ドロップします。するとこのようになりました。無事角度を変えて飛んだでしょうか?InspectorのTransformから確認してください。スポンサーリンク■飛距離の表示・やり直しボタンを設置する次はボールを飛ばす力の入力、と行きたいところですが、やはりどれくらい飛んだか分からないとつまらないし、やり直すのに停止と再生のボタンを押すと時間かかるのは不便なので先にここを何とかしましょう。TextそうしたらSceneを操作するこの2Dの拡大・縮小のボタンを押して操作します。Scene上に青い4つの丸が出るのでそれを外側の白い枠線の角にそれぞれ合わせてください。次はInspectorを次のようにします。Sizeを見やすい大きさへ。Alignmentを上下左右の真ん中へ。Colorを見やすい色へ。ついでにComponentでShadowを出すとTextに好きな色で影がつけられます。Outlineを出すとTextのふちに色をつけられます。ここら辺は自由に設定してもらって構いません。次はボタンを出します。ButtonTextと同じように操作して適当な大きさ、位置に置いてください。ボタンの中の文字はButtonの子オブジェクトのTextのInspectorから変えます。次はスクリプトを書きます。Shotスクリプトに入れても良いのですが、ここに載せるには長くなるので新たに書くことにしましょう。名前はLandingにしました。-10で終わるようにしたかと言うと、Sphereの角度を変えるとY軸の位置も変わって0未満になってしまうことが分かったのでそこまで引き下げました(笑)上の方にあるusingのところが追加されていることを忘れないでください。したらこのスクリプトもSphereにドラッグ&ドロップし、InspectorのLandingスクリプトの空欄にTextをドラッグ&ドロップします。Buttonの子オブジェクトのTextと間違えないようにしてください。次にButtonにセットしましょう。ButtonのInspectorのOnClickを見つけてください。その空欄に使うスクリプトを入れたオブジェクトをドラッグ&ドロップしてください。今回はSphereですね。FunctionからLanding、Reloadとたどってクリックして出来上がりです。その結果こうなりました。うーむ、リロードするとなぜかMateralの色がおかしくなりますね。申し訳ないのですが私にも原因は分かりません。Lightingのボタンを押すこれで色がおかしくなりません。■Sliderを利用して受け渡す力を決定する次はSliderというUIを使います。Areaがつまみの部分はいらないのでまずそれを削除します。次にSliderのInspectorのSlider(Script)を見て下さい。Interactableのチェックをはずします。すると再生中につまみ部分をクリックしても動かせなくなります。次にValueというスライダーがあるので動かしてみましょう。すると画面上のSliderの中身が動くのですが、一番端まで行きません。TransformのWidthの値を全て0にします。前景はFillのImage(Script)のColorから好きな色に変えてください。拝啓はBackgroundのImage(Script)のColorのアルファを0にして透明にします。Topにしてください。あとはSceneで位置と大きさを調節して完成です。そうそう、UIは基本的にHierarchyの下に配置されたものが手前に来るようになっています。SliderがTextを隠してしまうようならHierarchyで上の位置に来るようにドラッグ&ドロップしてください。それではまたShotスクリプトを開いてください。ここにSliderを動かすスクリプトを書き加えます。保存したらSphereのInspectorのShot(Script)にSliderという空欄ができているのでHierarchyのSliderをそこにドラッグ&ドロップします。さあちゃんとできているか確認してみましょう!■Cubeで地面に模様をつけるさて、下に何もないとどれくらいの高さをどれくらいのスピードで飛んでいるのかさっぱり分かりませんね。地面に縞模様をつけるのでCubeを出してください。CubeそれをこのようなScaleにしてください。色はMaterialで好きにつけてください。できたらProjectのAssetsにCubeをドラッグ&ドロップしましょう。スクリプトを書きます。無事に縞模様は出たでしょうか?■まとめ今回はオブジェクトを動かしたり角度を替えたりしました。ImageやSlider、Button、TextといったUIも使っています。これだけあれば最低限のゲームは作れると思いますが、実はまだ教えたいことがあり、それはこの記事が長くなったので次回に回します。↓この記事の続きです。15:34yukiさん、アドヴァイスありがとうございます。そのリンクの通りにしたら直りました。あとJetpackを入れてみたのですが色んな機能があってよくわかりません。良かったらおすすめの機能を教えてください。21:44このページの方、参考にさせていただいている者ですありがとうございます一つ質問なのですが弾く方向の算出において、カメラを回転して逆にすると、意図しない方向に飛んてしまって色々ともがいてはみたもののうまく制御できず、困っています。何か少しでも見解をいただければ幸いです。不躾な質問で申し訳ございませんが、よろしくお願いします。14:05くまださん、コメントありがとうございます。0);の部分の値をいじって角度を変えて見てください。ダメだったらまたコメントお願いします。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。