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

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

プログラミング

生徒が試験を欠席したとき、Excelで見込み点をつける方法

学校によりますが、大きな試験は1、2学期は中間試験・期末試験、3学期は期末試験だけ、というところが多いのではないのでしょうか。成績は中間期末が8割、提出物や小テストが2割程度といった感じで決めます。ほぼ中間期末だけで決めるところもありました。さ…

Unityのパーティクルに星形などの画像を使う

次の動画のようなパーティクルを作る方法です。元になる画像(ここでは十字の星)からパーティクルを作成する、ということです。ぼくはこれをシールドに敵が触れたときなどの効果に使ったりしています。 youtu.be Unityのパーティクルシステムには膨大な量の…

Unityで、取得した複数のアイテムの画像を画面の一定の位置に表示する

3Dのゲームで、画面の同じ位置にずっと何かを表示していたいことがあります。例えば取得したアイテムなど。次の動画では、画面の中央より少し左側に青い6角形、バッテリーのマーク、犬の画像がパネルに乗っているのが分かります。クエリちゃんは動き回ります…

Unityで簡単にシールドっぽいものを作る

ゲームでよく敵の攻撃を防ぐシールドを見かけます。きれいに光って形も美しく、いかにも敵の攻撃を防げそうです。ちゃんとエフェクト関係の勉強をすればいいのができそうですが今回、簡単に何となくそれっぽい効果を実現します。まずは動画をどうぞ。 youtu.…

Unityで、ゲームにランキング機能を入れる

今書いているゲームにランキングの機能を入れようかな、といくつか試しています。PlayFabを使うか、GAS(Google Apps Script)と使うか両方実験しました。ランキングについては前にブログで触れていますがあまり憶えていません! 復習のつもりです。 www.omo…

Unityで、バーチャルカメラをスクリプトでコントロール!

バーチャルカメラで「カメラワーク」を実現します。前回の記事より少しだけ難しいことをやります。前回の記事 ↓ www.omoshiro-suugaku.com 前回のようにカメラを動かすと、いわゆる3D酔いをしてしまうかも知れません。画面がぐらぐら揺れる感じのゲームだと…

Unityで、バーチャルカメラをスクリプトでオブジェクトに追従させる

バーチャルカメラを3Dの空間内を動き回るキャラクタ(クエリちゃん)に追従させます。つまり、カメラがクエリちゃんの後をついて回ります。これ、実はスクリプトなしで、バーチャルカメラの機能を使えばすぐできます。前に近い実験も紹介しました。 www.omo…

WebGLでクエリちゃんの影が消える

WebGLで動くようゲームをビルド(ブラウザゲームとしてビルド)したところ、エディタで実行しているときは表示されているクエリちゃんの影がブラウザでは消えていることに気づきました。「あれ?」と思い、ネットをあれこれ調べていて、一応解決。 影が見え…

Unityでパーティクルを複数選択しておくとFPSが下がる話

キャラクタに弾が当たったときなど、パーティクルで「キラキラキラー」とか演出します。 ↓ こういうやつ シューティングゲームなどでは短い時間内に立て続けに弾が当たることがよくあります。用意するパーティクルを1つだけにしておくと、弾が当たった直後に…

Unityで、ひとつのコルーチンを2回呼ぶとどうなるか

ゲームの開発作業中、必要があって実験しました。コルーチンを実行中に、同じコルーチンを呼んだらどうなるのでしょうか。例えばStartCoroutine(test());StartCoroutine(test());のように。 実験のため、コルーチンtest()を以下のように定義しておきます。//…

Unityで背景の上にキャラを配置したら表示がおかしい!

3Dの空間内で、Quadに犬の画像を貼り付けたものと、ハートを貼り付けたものを用意します。ハートを高い位置に配置しています。なお、Quadへの画像の貼り付けは次の記事の通りにしています(MaterialのRendering Mode(Quadのshaderの Rendering Mode)は Fad…

空間内を動くキャラクタの近くに常にUI(パネル)を表示する

3Dの空間内をキャラクタが動きます。常にその近くで何かをUI(パネルなど)で表示したいとします。例えばキャラクタの名前とか。サイトをあちこち調べ(それでもなかなかうまくいかなかったんですが)、ようやくなんとかなりました。こんな感じです。 ハート…

Unityのアンカー、ピボットを分かりやすく解説

アンカー、ピボットが分かりにくいです。ここで簡単な例を2つ挙げ、整理しておきます。これなら分かりやすい……はずです。 キャンバス上には座標(ローカル座標と呼びましょう)があります。今、キャンバス上にパネル(UI部品)が配置してあるとします(イン…

コルーチンから起動されたコルーチンは、もとのコルーチンが止まったときどうなるか

コルーチンAがコルーチンBを起動します。Aが止まったとき、Bはどうなるのでしょうか。Aが yield break; で止まったとしましょう。何となく、多分BはAと無関係に動き続けるんだろう、……と考えていました。今までそのつもりでコードを書いていたんですが、思い…

UnityでQuadにキャラクタを表示、α値を変更する方法(ジワッと出現させる)

今回はQuadに貼り付けた画像(キャラクタなどを想定)のα値を変化させ、ジワッとお出現(あるいは消滅)させる方法を書きます。 そもそも、ぼくはQuadにキャラクタの画像を貼り付けて表示したいときは以下のようにしています。マテリアルを作っておき(Rende…

Excelで2つの範囲の内容が完全に一致しているか調べる(3)

前回の記事はこれ。 www.omoshiro-suugaku.com 前回は文字列を扱うのを諦めていました。今回は文字列も数値と同様にチェックしています。文字列が含まれていれば1文字ずつ文字コードを取り出して処理します(前回の記事ではCODE()を使おうとしていてうまくい…

Excelで2つの範囲の内容が完全に一致しているか調べる(2)

前、こんな記事を書きました。 www.omoshiro-suugaku.com Excelの2つの表(の一部)同士が完全に一致しているか確認する方法です。チェックサム(表の数値の単純な総和)でもある程度誤りの検出はできます。2つの表のチェックサムが異なれば、当然表のどこか…

Unityでフォグ(霧)を自前でかける

Unityでフォグ(霧)をかける方法はもちろんあると思うんですが、ここでは自前でどのようにしたらフォグの効果を出せるのか、説明します。例えば遠くから敵が攻めてくるときなど、遠くで敵を生成してこちらに近づける、のようにしたいことがあります。ここで…

ゲームでステージが変わるとき、暗転する方法

ぼくはUnityで何かゲームを書くとき、「シーンの変更」というのをやったことがありません。実験で何回か試したことはありますが、実際のプログラムではステージの進行に伴うオブジェクトの処理(削除、新しいオブジェクトの生成など)など、全部自前です(要…

UnityでCinemachineのバーチャルカメラを使う(2)

⬇この記事の続きです。 www.omoshiro-suugaku.com 上の記事を書いた段階ではバーチャルカメラのAimパラメータの働きがどうもよく分かりませんでした。Aimは「カメラをオブジェクトに向ける」働きがあるということですが、それだけでは説明になってない感じが…

2Dシューティングゲーム「InuoShooting」公開しました

ゲームを書くのも久しぶり……というわけでリハビリのつもりでプログラミングしていました。ようやく1本できあがったので公開。 unityroom.com ブラウザゲームを投稿できるサイト、unityroomです。 当初はスマホで動くゲームにしようと思っていましたが、予定…

クエリちゃん、走った!

前の記事で書いたクエリちゃんが走りました。 今まではまったく使っていなかった、3Dのキャラクタのアニメーションをやってみました。テキストは前の記事でも書いたこれ。 作って学べる Unity本格入門[Unity 2023対応版] 作者:賀好 昭仁 技術評論社 Amazon…

Unityで3Dのキャラクタを使ってみる

とりあえず2Dのゲームは書けたので今度は3Dを……と考え、本を購入しました。3Dのキャラクタを扱う本は持っていましたが、一応、新しい方がいいかと思ってあらためて手に入れました。 作って学べる Unity本格入門 [Unity 2023対応版] 作者:賀好 昭仁 技術評…

UnityでCinemachineのバーチャルカメラを使う

バーチャルカメラというのを使ってみました。ゲームで、例えば主人公が動くのを後ろからカメラが追いかけ、立ち止まるとカメラがビューンと動いて(背景もダイナミックに変化!)正面からアップに……みたいな演出がありますよね。いわゆる「カメラワーク」と…

3つのキーの押下を検知できなかった話

押下は「おうか」と読むそうな。多分そうだろうと何となく考えていましたが、今回調べてはっきりしました。いや、本題はそこではなくて……スペース、矢印(右)、矢印(上)が同時に押されていることを確認しようとしましたがうまくいきません。2つしか検知でき…

2Dシューティングゲーム公開準備中!

久々の更新です。職場が変わり、ドタバタしていました。やはり職場が変わるといろいろ分からないこともあり、特に最初は何が何だかわからず、疲れますよね。細かいことでは印刷機の使い方とか授業の教室の位置とか。ようやくあれこれ自然に動けるようになり…

アドバーチャ(Ad-Virtua)でアプリに広告を入れる

アドバーチャ(Ad-Virtua)というのを導入してみました。↓ ad-virtua.com 自作アプリに広告を入れられます。「①再生単価×②再生数×③再生完了率」で収益が決まるそう。ひろはす氏(https://www.youtube.com/watch?v=jyO9zpESSgo)の動画で見て「面白そう!」と…

Unityでサウンドファイル(mp3)の音量をファイル毎に変える方法

ゲームのBGMや効果音を自分で作れる人は限られています。ぼくにそういう能力はないので、ゲームを作るときは何とか調達しなければなりません。ありがたいことに色々なサイトからmp3などのサウンドファイルをダウンロードでき、ぼくはこれを使わせてもらって…

2Dシューティングゲームで立体っぽいキャラクタを使う

2Dシューティングゲームでも、主人公が立体に見える方がいい場合もあります。今回はモデリングなど大変な作業はせず、地味な努力で一応立体っぽい雰囲気を出す話です。あまりうまく撮れていませんが動画をどうぞ。 www.youtube.com ぬいぐるみを16方向から写…

Unityで、自作クラス内でコルーチンを呼ぶ

自分で作ったクラス(特に継承はしていない)の中でコルーチンを呼ぶ必要があり、試してみました。次のコードではエラーが出ます。 //---------------- class testclassA { public IEnumerator test1() { Coroutine cr; cr = StartCoroutine(test2());//① yi…