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

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

プログラミング

100日で50弾! Day 22/ Bullet11:バラ弾

100日チャレンジ『100日で50弾!』第11回、バラ弾です。バラ曲線というのを使い、弾を移動させます。バラ曲線は次の式で定義されます。r = a *(float)Math.Sin(k * s)aは大きさを表し、kは花びらの枚数に関係します(kが奇数ならk枚、偶数なら2k枚)。これは…

100日で50弾! Day 20/ Bullet10:リフレクトショット

100日チャレンジ『100日で50弾!』第10回、リフレクトショットです。直線に沿って進む弾が見えない壁で跳ね返ります。動画をどうぞ。 原理自体は単純で、弾の位置をUpdate()内で点検し、指定した範囲から外に出ようとしたとき進行方向を変えればよいのです。…

100日で50弾! Day 18/ Bullet9:スウェイショット

100日チャレンジ『100日で50弾!』第9回、スウェイショットです。発射した弾をゆらゆら揺らしましょう。パーリンノイズというのがあります(パーリンは考案者の名前)。これを用います。 例えば地形など、急に高くなったり低くなったり、というのはあまりあ…

100日で50弾! Day 16/ Bullet8:トレイルショット

100日チャレンジ『100日で50弾!』第8回、トレイルショットです。 この弾は、撃つと軌跡が残ります。ちょうど、UnityにTrail Rendererというコンポーネントがあり、これを弾のプレファブにAddすることで軌跡が表示されるようになります。軌跡用のマテリアル…

100日で50弾! Day 14/ Bullet7:パスショット

100日チャレンジ『100日で50弾!』第7回、パスショットです。パスとはpath、つまり「道、通り道、進路」。弾を撃つとき、空間内で通過点を何点か決めてそこを通るようにします。「パスショット」としました。 前、自分で近い機能を実現してゲームを書くとき…

100日で50弾! Day 12/ Bullet 6:ブランチショット

100日チャレンジ『100日で50弾!』第6回、ブランチショットです。 100日チャレンジ、まだ楽しんでやっていますが、いずれ常在戦場みたいな感じになりそうです。ぼくは結構頻繁に授業で数学通信(数学をテーマにした新聞みたいなもの)を配布します。面白いこ…

100日で50弾! Day 10/ Bullet 5:トルネード弾

100日チャレンジ『100日で50弾!』第5回、トルネード弾です。 飛んでくるクエリちゃんが3発ずつ、回転する弾を続けて発射します。弾全体はサインカーブに沿って移動します。そのサインカーブの周りを3発がぐるぐる回りながら動きます。gifをご覧ください。 …

100日で50弾! Day 8/ Bullet 4:パターン撃ち

100日チャレンジ『100日で50弾!』第4回、パターン撃ちです。 画面手前に向かって縦3×横3=9発が何回か発射されます。弾は敵機から発射されるのですから、撃ったあとはだんだん広がっていくのが自然です。だから9発は移動の方向はすべて少しずつ異なっていま…

100日で50弾! Day 6 / Bullet 3:sin(サイン)弾

100日チャレンジ、『100日で50弾!』、第3回sin弾です。三角関数のsinを使い、サインカーブに沿って弾を移動させます。ここでは空間内でz方向(画面の手前向き)は一定の速さとし、x方向(画面の左右)、y方向(上下)に振幅をいろいろに変えたsinを用い…

100日で50弾! Day 4 / Bullet 2:ラウンドショット

100日チャレンジ、『100日で50弾!』、第2回です。弾自体は直線に沿って移動しますが、30発が少しの時間差でグルッとキャラの進行方向からズレた方向に発射されます。表現が難しいですが、要するに円形に発射するラウンドショットです。撃ったあとは円になっ…

100日で50弾! Day 2 / Bullet 1:直線弾

始まりました。100日チャレンジ、『100日で50弾!』。100日でシューティングゲームの弾を50種類作ります。100日だけれど2日毎なので50弾です。Dayは2日ずつカウントアップしてゆきます。どうなるか、楽しみです!! 書きかけのプログラムを一部流用しました…

Day 0 / Bullet 0:100日で50弾! 始めます

2、3日前に書いた記事です。 www.omoshiro-suugaku.com 『#100日チャレンジ 毎日連続100本アプリを作ったら人生が変わった』(大塚あみ2025日経BP)の説明の動画を見ました。なるほど、こういうの、面白い!! 自分でも何かやろう、と思いました。ここふた…

Excelで、自作の関数をアドインとして登録する方法

マイクロソフトのOffice2019のサポート期限が2025年10月14日だそうで、そろそろ動くか、とOffice2024を購入しました。そうしたら、ありそうなことですがExcelで使っていた、自分で書いたアドイン(ワークシートの一部分からハッシュ値のようなものを計算する…

DOTweenでタイマを

DOTweenで簡単にタイマを実現できます。ちょっとした動作を定期的にやらせたい、といったことはあるものです。あるオブジェクトを1秒ごとに表示したり非表示にしたり、……とか。コルーチンでも簡単に実装できます。しかし当たり前ですがそういうコルーチンを…

DOTweenでUIを移動する、ルーズリーフ使い始め

DOTweenの.DOAnchorPos()を使って、画面の外に隠れていたUI(ここではパネル。FPSを表示している)を画面内に移動して見えるようにします。動画をどうぞ。 youtu.be 次のコードでgoはUIのゲームオブジェクトです。画面の外、元の位置から座標で+150だけ右に0…

Unityで「バーチャルカメラ」がなくなった!?

Unity6(6000.0.32f1)でバーチャルカメラを使おうとしました。カメラが特定のキャラクタの動きを追うとか、複数のカメラを切り替えながら使うとか、いわゆる「カメラワーク」を簡単に実現できるようになります。Unityの前のバージョンで初めて使ってみて便利…

Unityで3Dモデルがピンク色、パーティクルがピンク色になる!

Unity(Unity6(6000.0.32f1))で新しくプロジェクトを作成し、前に使っていたプロジェクトから必要なアセット(3Dモデルやスクリプト、プレファブなど)をコピーし、必要なところを修正して新しいアプリを作ろうとしていました。そうしたら3Dモデルがピンク…

Unity+DOTweenでパネルとテキストをフェードアウト、3Dモデルを一瞬小さくする

DOTweenでいろいろ実験しています。なかなか面白く、確かにいろいろゲーム製作に使えそうです。ここではUI部品(Panelと、その子にしたTextMeshPro。テキストを表示している)をフェードアウトするのと、3Dモデル(ブラッククエリちゃん)を一瞬小さくする効…

DOTweenのSetLookAt()でQuadを使ったときのトラブル

UnityでDOTweenを使っています。なかなか便利そうなんですが、「あれ?」と思ったことが。コルーチンやその他の仕掛けを使わず、オブジェクトの生成時に1回、次をコールするだけで指定した座標の点を通り、しかも(SetLookAt(Camera.main.transform)によって…

DOTween、Studyaid D.B. 導入!!

DOTweenというアセットを導入しました。あれこれ試している最中ですが、凄く便利です。アニメーションをスクリプトで簡単に実装できます。キャラクタを動かす(キャラクタ自身が手を上げたり……は対応してないみたい)、テキストを動かす、カウントアップする…

ゲームの広告をスクリーンの決まった位置に表示する方法

ゲームに広告を入れます。Ad-Virtuaです。動画をどうぞ。 youtu.be 虹色の長方形のところに広告の動画が配信されます。スマホゲームによくあるバナー広告などに比べ、導入は遙かに楽でした。自分のゲーム3本に入れています。 その長方形の部分は広告のための…

ひとつのオブジェクトに複数の弾が当たったときに出た不具合

ひとつのオブジェクトに向かって、下の絵のように弾を発射して当てます。1発ずつ発射するだけでなく、「ブースター」みたいな感じでガンガン撃つこともあるでしょう。 このとき、的は1つなのに複数の弾から「当たったよ」と通知がくることがあるのです。この…

Unityでクエリちゃんがキューブに当たった後、動きがおかしい

ふと気づくとクエリちゃん(3Dモデル)がジリジリ上へ動いているので「??」と思っていましたが、時々なので「ま、あとで考えるか」とのんきにしていました。動画をどうぞ。 youtu.be あれこれ実験した結果、開発過程で作ってそのまま残しておいたキューブ…

Unityで、クエリちゃん(3Dモデル)を半透明にしようと挑戦した話(2)

なんとかなったので報告です。次のサイトの説明に従って新たにシェーダを作ります。 nn-hokuson.hatenablog.comシェーダの名前は(どう決めてもよいのでしょうが)、サイトでは「SemiTransparent.shader」としています。これをブラッククエリちゃんの各パー…

Unityで、クエリちゃん(3Dモデル)を半透明にしようと挑戦した話

写真はクエリちゃんでなく、ブラッククエリちゃんですが理屈は同じです。 写真ではボディの部分だけが半透明になりました。この調子で、3Dモデルの全体を半透明にしたいのです。 ブラッククエリちゃんはヒエラルキーでは次のようになっています。 親のQuery…

どんなゲームを作りたいのか

作ったゲームをunityroom、Plicy(一部GooglePlayにも)で公開しています。ぼく自身はほとんど全くゲームはやりません。少し前「昔は自分はゲームをやならいがゲームを作る」というプログラマがいたけれど今ではいない、という記事をネットで見ました。そう…

3Dシューティングゲーム 3D Q-Shoot 完成!!

疲れたー。ようやくゲームが完成です。危なそうなところの動作をもう1回見直して(ブラウザで遊べるゲームとして)公開します。タイトルは 3D Q-Shoot (Ver. 1.0.0) です。クエリちゃんが攻めてくるブラッククエリちゃんをやっつける、単純な3Dシューティン…

UnityでPlayerPrefs.SetInt()が使えなかった話

ここのところ、WebGL(スマホやPCでなく、ブラウザで実行する)のゲームを書いています。Unityでメニューから「Build And Run」を選ぶと、ブラウザでどう見えるのか、試すことができます。一般に、ゲームではハイスコアなどの記録は次回に遊ぶとき参照できる…

Unityで、PlayFabにログインしているか確認する方法

学期末の成績処理も終わり、時間ができたのでこの冬休み中のゲームの完成を目指してコーディングしています。 これまでいくつか、PlayFabについて記事を書いています。PlayFabとは、ハイスコアランキングなどの機能をゲームに実装するのに役立つ仕組みです。…

Excel vbaのユーザ定義関数(function)でできないこと

Excelのvbaでユーザ定義関数を使いました。自分で関数を書くのです。 www.omoshiro-suugaku.com 試行錯誤中、計算の作業領域としてワークシートのデータが入っていないセルを使おうとしたとき、エラーでうまくいきませんでした。次のようなコードです。セル…