いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

2021-01-01から1年間の記事一覧

Unityで、オブジェクトに動的にマテリアルを設定する

作成中のシューティングゲーム、「これは解決しとかなきゃまずいだろ……」という問題が。PCで実行するときは大丈夫なのですが、実機(スマホ)だと場面によってはFPS(1秒間に描画する回数)が10台になってしまいます。人間が見たとき、30を切っていると動き…

UnityでUIにピンチイン、ピンチアウトを実装する

前回、UIをドラッグするコードを紹介しました。UIとしてはPanelを相手にしていますが、他でも同じだと思います。 www.omoshiro-suugaku.com 今回はそれに続けて、Panelにピンチイン、ピンチアウトを実装します。ピンチインとは2本の指で画面の一部をつまむよ…

UnityでUIオブジェクト(PanelやImageなど)をドラッグする

作成中のゲームに簡単なヘルプ(遊び方の説明)をつける予定です。ある程度の量になってしまいます。スマホアプリですから画面は小さいので、大きなヘルプ画面をドラッグして見たい部分を見られるようにします。要するにスマホでサイトを見るような感じにし…

ランキング機能をPlayfabで実装しました。Guidについても少し。

この連休でランキングの機能を実装しました。重複しますが一応、ランキングについて簡単に書いておきましょう。 スマホのゲームではスコアランキングを表示できるものがあります。自分のスコアランキングではなく、そのゲームのやっている人たち全員のランキ…

ニフクラのNCMBでランキング機能を実装するのを諦めました……

せっかくシューティングゲームを作るのだから、ランキング機能を入れたい!と思っていろいろ調べ、GoogleのFirebaseか、ニフクラのNCMBかで検討し、NCMBに決めて導入しました。ランキング機能というのは……同じゲームをユーザーの皆さんがあっちでもこっちで…

Unityで非アクティブなUIオブジェクトを取得する

すみません、タイトルは少し意味が取りづらいかも。ボタンをクリックするとUIのパネル(Panel)に作っておいたランキング表が表示されるようにしようと思いました。 最初は非アクティブ状態にしておきます。↓ こういう風に。 この状態からスクリプトでアクティ…

シューティングゲームでたくさんの敵機を管理する話

最近は数学、物理は放っておいてゲームのプログラミングばかりしています。こういう時期もあるものです。疲れたので気晴らしに書きます。 どこの高校でも3年生が2月くらいから家庭研修に入り、家で受験勉強をします。聞いてみると「1日13時間勉強していまし…

ハイスコアランキングの桁の位置合わせ

作成中のシューティングゲームにハイスコアランキングの機能を入れました。予定通り、ニフクラ(NCMB)を使わせてもらいました。アプリで出たスコアはアプリからニフクラへ送り、アプリは集まったスコアの上位20データを取得、一覧を表示します。ニフクラへ…

デリゲート、匿名メソッド、ラムダ式を分かりやすく説明する

やや分かりづらいところです。例によって最小限のコードで、限界まで分かりやすく説明しましょう。 デリゲートについては既に記事にしてあります。なるべく参照する必要のないように書きますが、少しでも「??」と思ったらお読みください。 www.omoshiro-su…

シューティングゲーム作成の中間報告!

ようやくシールド(敵の攻撃を防ぐ)その他、各種ボーナスも装備。我ながらなかなかきれいにできています。 せっかくのシューティングゲームです。上位10人のスコアなんかが見られればうれしいですよね。こういうランキング機能も入れたかったので、仕事の行…

Unityで、変数の初期化時の値を変更しても反映されなかった話

開発作業していて、2時間ハマりました。うう……(涙)。皆さん、お気をつけください。 メインのクラスで変数 xxxx を定義し、同時に初期化しました。 public int xxxx = 1234; という感じです。他のクラスからも参照したかったので public をつけて宣言してい…

Unityでキャラクタを決まった軸の周りに回す

編隊を全滅させたとき「300」が現れ、クルクルッと回って加点、とやりたかったので試しました。板(3DオブジェクトのQuad)に「300」の絵を貼り付けます。その板を上下方向の軸の周りに回します。 ↑こんな感じです。動画でお見せしたいですが、ブログに動画…

シューティングゲーム作成中~!

編隊を全滅させたときの加点、ボーナスの出現、取得ボーナスの表示、ここ1週間くらいで細かなところをあれこれやってます。ゲーム自体はだいたいいいんですが、まだ効果音、音楽はつけていません。ランキングの仕組みを入れるのもこれから。4月中に……くらい…

『知っていそうで知らないノーベル賞の話』紹介

久しぶりに「これだよ、これ!」と思った本です。 ぼくたちは簡単に「ノーベル賞」と言います。でもよく考えてみるとノーベル賞についてほとんど何も知らないことに気づきます。せいぜい「ダイナマイトの発明者、ノーベルがその遺産で作った賞」くらいでしょ…

蝶ネクタイ型変声機の実験を見せる

もうすぐ今年度初めての授業です。「授業開き」と言うようですね。この言葉、ぼくは今まで使ったことがありませんが。小中で使われているのかも知れません。ぼくの担当は数学なので大抵何かテーマを決めて「こんなに楽しいことがあります」みたいな話をいく…

新年度スタート! 今年度の計画。

試験範囲の授業が終わりそうもない! なんとかしなければ! ……というときはプリントを使います。生徒が板書を写す時間を節約できれば相当余裕ができます。穴埋めにでもしておけば生徒も「勉強したかな」というある程度の満足感は得られるでしょうし、今年は…

何その決まり?……な話

最初に勤めた学校は生徒が結構大変で(生徒指導面)、ぼくも学校を出てすぐだったのでカルチャーショックを受けました。「あり得ない……」と思ったことがたくさんあったのです。朝礼で生徒が並ばず、あちこちで輪になって話しています。間を教員が怒鳴りなが…

Unityでスクリプトを使って線分を描く(3)(初心者向け)

3回目です。前回、以下のようにすれば何度コールしてもエラーを出さずに線分を描画できるということを明らかにしました。が、このままではまずいということが分かりました。 //1本目 GameObject g = new GameObject(); var rd = g.AddComponent<LineRenderer>(); var pos =</linerenderer>…

Unityでスクリプトを使って線分を描く(2)(初心者向け)

今回の目標は次のように空間内に線分を描くことです。 前回、次の絵のように1本だけ描くことには成功しています。 そのときのコードは次の通りでした(なお、点を追加すれば折れ線は簡単に描けます)。 var renderer = gameObject.AddComponent<LineRenderer>(); var pos =</linerenderer>…

Unityでスクリプトを使って線分を描く(初心者向け)

制作中のゲームで線分を描画したくてネットを調べ、実験して、分かったことをまとめます。 とにかく初心者には重要なポイントが分かりません。長いコードは見るだけで尻込みすることも。最短のコードで、単機能を実現する例を挙げてもらえれば凄くうれしいの…

教員はクラスの平均点を上げた方がいいのか

公立高校でもやたら平均点にこだわる人がいて驚いたことがあります。いや、私立だとどうか、はっきりは知らないんですが。聞いた話では私立の学校で週番の先生が窓を閉め忘れ、雨が吹き込んでしまって減俸になったとか。多分公立高校では(管理職に怒られる…

教員に上の学校の知識は不要か?

ぼくは教育実習は中学校へ行きました。3週間、辛い日々でした……。いわゆる「指導案」をほぼ毎日書かなければならないんですが、もう形式ばっかりで、まあ「授業をやるのに最もよくできた書類」みたいな話も聞きますが、大変すぎでした。あまりに疲れて、家に…

教師のバトン…………

あはは、やっちゃったね……という感じです。文科省がそういうプロジェクトを立ち上げたのです。検索すればニュースが無数にヒットします。さあ、検索!! 要するに、今、教員の質の低下とか採用の倍率低下とか言われていて、現職の教員から「こういう素晴らし…

1が出続けたサイコロは、次に振ると1は出にくいのか?

学生のときサークルの何人かで遊んでいて、サイコロが続けて3回、1の目だったことがありました。これを見た工学の先輩が「じゃあ、次に振ると1の目が出る確率は1/6より小さいね」と言ったのを聞いて、ぼくは耳を疑いました。理系ならなおさらですが、こうい…

『C#ポケットリファレンス』紹介

最近、コンピュータ言語はC#ばかりを使っており、このリファレンスは大変重宝しています。 レビューを見ると意見はいろいろのようですが、個人的には素晴らしい! リファレンスのことに限りませんが、よく「その程度の情報はネットで手に入る」みたいな主張…

Unityでスケジュールに従って敵キャラを生成する方法

Unityで、ある瞬間からの時間を測り、2秒後、6秒後、19秒後で特定の動作をさせたいとしましょう。例えば…… Time.realtimeSinceStartup でプログラム起動からの経過時間を測れますが、これの値が2秒、6秒、19秒のときに敵キャラを生成したい、などというケー…

今年度を振り返って。Unityとゲームプログラミング今昔、教員のローカルルール

今年度の仕事は終わりました。このあと年度末まではシューティングゲームを書くことにします。飾りの部分以外は早くケリをつけたい……。 今年度は5月くらいまでは「写真から立体を再現する」というテーマでプログラミング(Pythonで)と実験を繰り返していま…

デフィー・ヘルマン鍵交換を例え話で

面白い本でした。強くお勧めします。特にデフィー・ヘルマン鍵交換の例え話が気に入りました。もちろん例え話ですから限界はありますが、ポイントをよく捉えていて驚きました。ときどき生徒にも話します。面白がる子もいます。今回はこれを紹介します。今、…

C#で変数に関数を代入する、デリゲートについてわかりやすく解説。

C#でデリゲートというのを使ってみましょう。Cで言うところの関数ポインタです。 2つの処理があり、異なるのは中で使う関数だけということがあります。1つめの処理では、その中で関数 add(x, y) を使うとしましょう。例なので、この add(x, y) は単純な足し…

敵機の移動に2つの曲線を使いたい。つなぎ目をどうするか?

シューティングゲームで、敵のキャラクタを式に従って動かします。空間の曲線なら、例えば だったらtが増えるとz軸の正の向きにグルグルとらせんを描きながら進みます。話題は少しそれますが、この式だって易しいけれど数学。「プログラミングに数学は不要…