Unity
作成中のシューティングゲーム、「これは解決しとかなきゃまずいだろ……」という問題が。PCで実行するときは大丈夫なのですが、実機(スマホ)だと場面によってはFPS(1秒間に描画する回数)が10台になってしまいます。人間が見たとき、30を切っていると動き…
前回、UIをドラッグするコードを紹介しました。UIとしてはPanelを相手にしていますが、他でも同じだと思います。 www.omoshiro-suugaku.com 今回はそれに続けて、Panelにピンチイン、ピンチアウトを実装します。ピンチインとは2本の指で画面の一部をつまむよ…
作成中のゲームに簡単なヘルプ(遊び方の説明)をつける予定です。ある程度の量になってしまいます。スマホアプリですから画面は小さいので、大きなヘルプ画面をドラッグして見たい部分を見られるようにします。要するにスマホでサイトを見るような感じにし…
この連休でランキングの機能を実装しました。重複しますが一応、ランキングについて簡単に書いておきましょう。 スマホのゲームではスコアランキングを表示できるものがあります。自分のスコアランキングではなく、そのゲームのやっている人たち全員のランキ…
せっかくシューティングゲームを作るのだから、ランキング機能を入れたい!と思っていろいろ調べ、GoogleのFirebaseか、ニフクラのNCMBかで検討し、NCMBに決めて導入しました。ランキング機能というのは……同じゲームをユーザーの皆さんがあっちでもこっちで…
すみません、タイトルは少し意味が取りづらいかも。ボタンをクリックするとUIのパネル(Panel)に作っておいたランキング表が表示されるようにしようと思いました。 最初は非アクティブ状態にしておきます。↓ こういう風に。 この状態からスクリプトでアクティ…
作成中のシューティングゲームにハイスコアランキングの機能を入れました。予定通り、ニフクラ(NCMB)を使わせてもらいました。アプリで出たスコアはアプリからニフクラへ送り、アプリは集まったスコアの上位20データを取得、一覧を表示します。ニフクラへ…
やや分かりづらいところです。例によって最小限のコードで、限界まで分かりやすく説明しましょう。 デリゲートについては既に記事にしてあります。なるべく参照する必要のないように書きますが、少しでも「??」と思ったらお読みください。 www.omoshiro-su…
開発作業していて、2時間ハマりました。うう……(涙)。皆さん、お気をつけください。 メインのクラスで変数 xxxx を定義し、同時に初期化しました。 public int xxxx = 1234; という感じです。他のクラスからも参照したかったので public をつけて宣言してい…
編隊を全滅させたとき「300」が現れ、クルクルッと回って加点、とやりたかったので試しました。板(3DオブジェクトのQuad)に「300」の絵を貼り付けます。その板を上下方向の軸の周りに回します。 ↑こんな感じです。動画でお見せしたいですが、ブログに動画…
3回目です。前回、以下のようにすれば何度コールしてもエラーを出さずに線分を描画できるということを明らかにしました。が、このままではまずいということが分かりました。 //1本目 GameObject g = new GameObject(); var rd = g.AddComponent<LineRenderer>(); var pos =</linerenderer>…
今回の目標は次のように空間内に線分を描くことです。 前回、次の絵のように1本だけ描くことには成功しています。 そのときのコードは次の通りでした(なお、点を追加すれば折れ線は簡単に描けます)。 var renderer = gameObject.AddComponent<LineRenderer>(); var pos =</linerenderer>…
制作中のゲームで線分を描画したくてネットを調べ、実験して、分かったことをまとめます。 とにかく初心者には重要なポイントが分かりません。長いコードは見るだけで尻込みすることも。最短のコードで、単機能を実現する例を挙げてもらえれば凄くうれしいの…
Unityで、ある瞬間からの時間を測り、2秒後、6秒後、19秒後で特定の動作をさせたいとしましょう。例えば…… Time.realtimeSinceStartup でプログラム起動からの経過時間を測れますが、これの値が2秒、6秒、19秒のときに敵キャラを生成したい、などというケー…
空間の中を戦闘機を動かしましょう。普通に数学でやるように空間内の曲線の式を使ってもよいですが、式では表しにくい曲線もあります。 図を見てください。線分p0p1を8:2に内分する点、線分p1p2を8:2に内分する点、線分p2p3を8:2に内分する点をそれぞれp4、p…
Unityで、押されているキーを検出します。 Input.GetKey(KeyCode.LeftShift) (左シフトキー) Input.GetKey(KeyCode.RightArrow) (右方向キー) Input.GetKey(KeyCode.Space) (スペースキー) というコードで、押されているなら true、押されていないなら…
3Dのシューティングゲームを作るとき、敵機が視界(スクリーン)から消えたときにその敵機を削除するようにプログラミングします(削除せずに放っておくと、見えないだけで存在し続けます。実際にはちょっと見えなくなって、軌道の関係ですぐまた視界に入る…
UnityにはMathfというクラスがあって、様々な数学の関数が使えます。例えばMathf.Sin()でsinを計算できます。プログラムに出てくる数値を四捨五入する必要があり、探したらMathf.Round()というのが見つかりました。ただ、これは名前からして「丸め」だけれど…
とりあえず……敵を出して動かしてみました。下の写真です。敵キャラは暫定でこの形。いずれもう少し変えますが。移動のコースは、敵キャラの生成場所と経過時間によって空間内の場所が決まるように数式を決めてやっています。キャラクタはもちろん正面が進行…
Unityでゲーム作成中!……なんですが、細かなところであちこちつまずきます。 「環境光」というのがあります。ゲームの世界を照らす灯りが必要ですが、直接光、環境光と2種類あります。直接光は光源から直に当たる光です。環境光は、光源からの光が直に当たら…
前回、Unityでビルボードを実現、という話を書きました。 www.omoshiro-suugaku.com 調べると、オブジェクトには、それを構成する点が4点しかない、本当の平面みたいなものがあるようです。3DオブジェクトのQuadというやつです。実験してみました。これに絵…
ちゃんとした定義は知りませんが、ゲームプログラミングの技術の中に「ビルボード」というのがあります。3Dのゲームで、例えば道ばたの木など、ちゃんとモデリング(PC上で立体として木を作る。幹、枝、場合によっては葉などのパーツもしっかり)したものを…