chevron_left

メインカテゴリーを選択しなおす

cancel
Unity勉強中!あこがれだったプログラマーに今からなろう! https://amaniku.hatenablog.com/

昔あこがれだったプログラマー。今からでもUnityを勉強してみようと思い立ち、チャレンジ開始! Unity勉強メモや、悪戦苦闘な日々の記録です。

自作ゲームを公開しています。 まだパソコンでしか遊べないので、現在、スマホ対応版を頑張ってます。 https://unityroom.com/users/r9bkxnqgc7zmpwjhfea3

甘肉
フォロー
住所
未設定
出身
未設定
ブログ村参加

2023/10/10

arrow_drop_down
  • Unity経験者によるGodot実践メモ:GameManagerっぽいものについて

    Unity経験者がGodotを遊んでみて学んだり、感じたりしたことの記録です。 今日はUnityでいうGameManagerっぽいものの作成方法について紹介します。

  • Unity経験者によるGodot実践メモ:インプットマップとノードの種類について

    Unity経験者がGodotを遊んでみて学んだり、感じたりしたことの記録です。 今日はインプットマップとノードについて紹介します。

  • Unity経験者によるGodot実践メモ:変数とスクリプト・処理ルーチンについて

    Unity経験者がGodotを遊んでみて学んだり、感じたりしたことの記録です。 今日は変数の宣言の仕方とスクリプトの構造の違いについて紹介します。

  • Unity経験者によるGodot実践メモ:初期インストールと4大要素について

    Unity経験者がGodotを遊んでみて学んだり、感じたりしたことの記録です。 今日は最初のインストールと、Godotを学ぶ上でとても大事な4大要素について紹介します。

  • 3D脱出ゲーム:イベントシステムを作成しよう。

    今度は3D脱出ゲームを作成しています。 今日は、イベントの整理と実装・k処理の仕組みをまとめました。

  • 3D脱出ゲーム:GameModeの整理をしよう。

    今度は3D脱出ゲームを作成しています。 今日は、GameModeを定義しました。

  • 3D脱出ゲーム:Zoom機能を改造しよう。

    今度は3D脱出ゲームを作成しています。 今日は、Zoom機能を改造しました。

  • 3D脱出ゲーム:ItemBoxをドラッグできるようにしよう。

    今度は3D脱出ゲームを作成しています。 今日は、ItemBoxをドラッグして動かせるようにしました。

  • UniTaskとオブジェクトプールの併用でasync/awaitが動かなかったので解決方法を実験。

    昨日書いた様に、3D脱出ゲームはちょっと休憩して、今日はUniTaskの実験。Unityroomのゲームジャムに参加した際、どうせならとUniTaskを導入して使ってみた。 敵キャラの動作をコルーチンの代わりにasync/awaitでやってみたのだけれど、なぜか上手くいかない。 敵キャラはオブジェクトプールを使って、同じオブジェクトを使い回す様に作ったけれど、敵がやられてオブジェクトプールに返って、 その後に再生成されると、async/awaitが動いてくれなかった。もっとしっかり解決方法を調べたかったけれど、ゲームジャムは一週間と言う期限があったので、仕方なくコルーチンに戻して完成させる事に…

  • 3D脱出ゲーム:カバンからアイテムをドラッグして出せるようにしよう。

    今度は3D脱出ゲームを作成しています。 今日は、カバンからアイテムをドラッグして取り出す仕組みを考えてみました。

  • 3D脱出ゲーム:ドラッグしたアイテムを所定位置にセットできるようにしよう。

    今度は3D脱出ゲームを作成しています。 今日は、ドラッグしたオブジェクトを所定の位置にセットする仕組みを実装しました。

  • UnityRoomの1Wゲームジャム参加:Color Change Panicを公開しました。

    Unityroomの1Wゲームジャムに参加。 パズル・シューティングゲームを公開しました!

  • ドラッグ&ドロップで3Dオブジェクトを移動したり取得したりしよう!

    今度は3D脱出ゲームを作成しています。 今日は、オブジェクトをドラッグして移動したり、アイテムボックスに格納する方法ついてです。

  • Quaternionの意味を知らなくてもいいんだけど・・・

    今日も、しまづさんのyoutubeシリーズで3D脱出ゲームの勉強です。 www.youtube.com今日は、 # 08ズームパネルの作成 # 09ズームオブジェクトの作成 # 10ズームオブジェクトの回転 をやりました。# 07アイテムの使用の時点で、ItemBoxの選択の初期化が抜けているように思えていたので ちょっとドキドキしていたのですが、# 08ズームパネルの作成でしっかり対策されていました🤣 そりゃそうよね〜😆今回の動画での一番の学びは、やっぱり、# 10ズームオブジェクトの回転での、 Objectを回転させる時の回転軸を指定する方法と、その回転軸に補正を…

  • Unityの関数の基礎の基礎

    昨日に引き続き、しまづさんのyoutubeシリーズを参考に、3D脱出ゲームの勉強中です。 www.youtube.com今日は、 # 04 アイテムボックスに左詰でいれる # 05 アイテムのデータベース化 # 06 アイテムの選択 # 07アイテムの使用 を実習。やっぱり新しいことを学ぶのは楽しい!😁 この時点でも、学びがたくさんありました。 public bool OnSelected() { if (item == null) { return false; } BackGroundPanel.SetActive(true); return true; } 基礎の基礎で、関数の説…

  • ちょっと思い直して、3D脱出ゲームを作ることにしました。

    前回、次はポケモン風RPGと書きましたが、 3Dアクションゲームが3か月掛かったので、また長期間作成が必要な作品だと、ちょっとシンドイなあと思ってしまったので、 別のジャンルに挑戦することにしました。という事で、しまづさんのyoutubeシリーズを参考に、3D脱出ゲームを作成してみます😄 www.youtube.comまずはテクニックを学んでいきつつ、どんなゲームにするか考えていこうかなと思ってます。今日は早速、 # 01 アイテムのクリック判定 # 02 アイテムの実装 # 03 アイテムボックスの実装 を実習。アイテムでCubeやSphereだけでは寂しいので、フリーの3Dモデルサイト f…

  • 3Dアクションゲーム公開しました!

    ついに3Dアクションゲームを公開しました!unityroom.com いや〜、かかったなあ😅 去年12月の2日から作成始めているので、実に3ヶ月もかかってしまいました。 プレイ時間は10分程度です🤣 時間にすると、たったこれだけのゲームですが、今回も学んだことをガッツリと詰め込みました。 今まで使っていなかったTimeLineの勉強ができたのが、とても良かったかな。 あと、だいぶUnityActionやScriptableObjectになれてきたと思います。ゲームの中身としては、 右上のレーダー画面やロックオン機能、案内役の従者など、色々と作り込みましたが、 ジャンプなど、蛇足だったと思う機能…

  • GitHub CopilotとMicrosoft Copilot:ゲーム開発者の新たなパートナー

    ここ数日間は、3Dアクションゲームの制作にずっと没頭してます。 2月中に完成させたいと思っていましたが、少し間に合わない感じ💦基本的には、作るべきものの大半は作り終えているので、残りは全体的な調整とデバッグくらいですが、思った以上に時間がかかっています。 ちょっと気分転換に、新しいことを始めたくなり、これまで試していなかったGitHubとの連携、そしてGitHub Copilotの導入をやってみようと思いました。GitHubとの連携は、スタジオしまづさんのYouTubeを見ながら、しまづさんの個人サロンでの説明を受けつつ、サクッと導入。 ・・・したまでは良かったのですが、連携しようとしたゲーム…

  • Unityのドロップダウンリストの設定方法

    ここ最近は、ブログを書ける進捗すらもないほどに、ずっとTimelineに悩まされていていました😅 どうにかこうにか形になってきたので、備忘録も兼ねて、まずはドロップダウンリストについて纏めておこうと思います。UnityにもUIとしてドロップダウンが搭載されてはいるけれど、使ってみると案外設定が解りにくい。 ドロップダウンを紹介しているサイトは数多くあるけれど、肝心な箇所の説明がなかったり、足りなかったりしたので、 あっちこっちのサイトから情報をかき集めてくる必要があった。まずは、標準的なドロップダウンリストといえば、こんなイメージだけど フォントや表示エリアの設定が、それぞれ別のObjectに…

  • TimelineでAnimationClipを動作させる時の問題点と解決策:3Dアクションゲームを作ろう(18)

    敵に勝利しジェムを取り戻せ!、3Dアクションゲーム作成中。 TimelineでAnimationClipを動作させる時の問題点と解決策

  • カーソルでボタンを操作しよう!:3Dアクションゲームを作ろう(17)

    敵に勝利しジェムを取り戻せ!、3Dアクションゲーム作成中。 設定画面の作成(2)カーソルでボタンを操作できる様にする。

  • Audio Mixerとスライダーの連携:3Dアクションゲームを作ろう(16)

    敵に勝利しジェムを取り戻せ!、3Dアクションゲーム作成中。 設定画面の作成(1)AudioMixerのボリュームをSliderで調整。

  • 3Dアクションゲームを作ろう(9):GameOverの実装(1)水に落ちたらGameOverにする。

    敵に勝利しジェムを取り戻せ!、3Dアクションゲーム作成中です。 今日は川に落ちた時の処理を作成しました。

  • 3Dアクションゲームを作ろう(7)

    しまづさんのUdemyを参考にして、攻撃コンボを作る過程でスタミナを作り込んだ。 こうなってくると、そろそろただの四角形で作ったHPとスタミナのバーが不恰好に見えてきたので、UIを作り込んでおく事にした。UIはアセットストアで、一眼見て、雰囲気がとても気に入ったSteampunkUIを使っている。 assetstore.unity.comスチーム関係ない世界観のゲームだけど、そこは気にしない🤣 雰囲気が良ければいいのだ😆右上は3Dアクションゲームを作ろう(6)で作成したレーダー画面。 ただ、普通に映しただけでは縁もない状態で見栄えが悪いので、Render Textureを使ってUIのRaw I…

  • 3Dアクションゲームを作ろう(6)

    unityroom.com橋広コウさんも、同じく流星咲斗さんの動画シリーズで勉強して作品を公開されたので、早速遊んでみた。 その作品の中で、敵レーダーがあったのが、とても便利で感銘を受けたので、自分でも作ってみる事にしました。まず、レーダー用のカメラを作成し、Player Objectの子供に設定する。 レーダー用のカメラは、ある程度の高度のプレイヤーの真上から、プレイヤーを撮影するようにする。 次に、その映像を同時にゲーム画面に表示させるのだが、これは調べてみると、案外簡単に設定できた。ただ、これだと、単に上空からの映像になってしまって分かりにくかったので、レーダーに映るObject(Pos…

  • 3Dアクションゲームを作ろう(5)

    流星咲斗さんの【3Dアクションゲーム】作り方。 動画シリーズでの勉強は今日の#15 『敵をロックオン』で最後。 まだ、 #11 『ゲームオーバー表示を実装』 #13 『制限時間の実装』 #14 『スコアを作る』 #16 『ゲームを 書き出す』 といくつかの動画はやっていないけれど、サイドビューアクションゲームで学んだことと 重なる部分と思えたのでパスした。さて、#15 『敵をロックオン』 www.youtube.com3DARPGを遊ぶには是非とも欲しい機能だ🤩作り方もそれほど難しくなく、サクッと実装する。 これで、一応ロックオン機能の完成ではあるのだけど、 敵をロックオンしていると、カメラが…

  • 3Dアクションゲームを作ろう(4)

    流星咲斗さんの【3Dアクションゲーム】作り方の続き〜今日は、 #9 『プレイヤーのHPの実装』 #10 『敵をウロウロさせる』 #12 『地形を変える』 を学習。#11 『ゲームオーバー表示を実装』については、 見た感じ、ほぼほぼサイドビューアクションゲームと同じ感じだったので、飛ばした😁あとは、#13 『制限時間の実装』、#14 『スコアを作る』、#15 『敵をロックオン』、#16 『ゲームを 書き出す』 だけど、 #13、#14、#16は他のゲームと同じ感じっぽいので、飛ばすと思う😁#15はぜひやりたいので、明日これをやって、あとは自己流に修正していく感じかな〜といっても、実はもう相当、自…

  • 3Dアクションゲームを作ろう(3)

    今日は、流星咲斗さんの【3Dアクションゲーム】作り方の #8 『HP(体力)』これもシューティングゲームやサイドビューアクションゲームで散々作ってきたHPバー。 3Dでの実装は初めてだったが、基本的な構造は同じだった。ただ、HPバーの向きが敵と同じ方向になってしまうため😅、見辛くて仕方がない。 これについては研究の必要がありそうだ。あとは、敵を攻撃した時があまりにも寂しかったので、攻撃がヒットした場所にエフェクトを表示させるようにしてみた。OnCollisionEnterとOnTriggerEnterで衝突座標の取得方法が違うようで、 OnTriggerEnterだと、こんな感じらしい。 Ve…

  • 3Dアクションゲームを作ろう(2)

    昨日に引き続き、流星咲斗さんの【3Dアクションゲーム】作り方を勉強中。今日は、 #4 『剣で攻撃する方法』 #5 『エフェクトで画面を華やかに!』 #6 『効果音で世界を彩る』 #7 『敵に追尾させる方法』剣で攻撃する方法については、サイドビューアクションゲームである程度理解できているので、だいぶ楽😆 むしろ、3Dだと剣に直接colliderを設定できる分、実は2Dより判りやすいんじゃないかと思えたほど。エフェクトのパーティクルシステムもサイドビューアクションゲームでちょこっと齧ったので、サクッと進める。 むしろ、あの時、この動画を見たかった😅どうも、自前のはあまり良いものが作れなかったので、…

  • 3Dアクションゲームを作ろう(2)

    昨日に引き続き、流星咲斗さんの【3Dアクションゲーム】作り方を勉強中。今日は、 #4 『剣で攻撃する方法』 #5 『エフェクトで画面を華やかに!』 #6 『効果音で世界を彩る』 #7 『敵に追尾させる方法』剣で攻撃する方法については、サイドビューアクションゲームである程度理解できているので、だいぶ楽😆 むしろ、3Dだと剣に直接colliderを設定できる分、実は2Dより判りやすいんじゃないかと思えたほど。エフェクトのパーティクルシステムもサイドビューアクションゲームでちょこっと齧ったので、サクッと進める。 むしろ、あの時、この動画を見たかった😅どうも、自前のはあまり良いものが作れなかったので、…

  • 3Dアクションゲームを作ろう

    今ひとつサイドビューアクションゲーム作りのきぶんが乗らないので、新しいゲームの作り方を勉強することにした😅 飽きっぽいのが、僕の良くないところ🤣youtubeで再生リストでまとまっているのを見つけたので、流星咲斗さんの【3Dアクションゲーム】作り方を勉強してみよう。 www.youtube.com今日は、 #1 『移動できるようにしよう!』 #2 『アニメーションの切り替え方法』 #3 『敵を出す方法』 をやってみた。基礎の説明ではあるけれど、人によってスクリプトの書き方が違っていて、これはこれで勉強になる。 それにしても、アセットをそのまま使うのでよければ、3Dフィールドを作るのがこれほど楽…

  • 今更ながらHTML。

    公開したBreak Plateを知り合いに宣伝。youtube用の動画も作成したけれど、僕のチャンネルはこのブログ用の動画しかないので、宣伝効果は怪しいもの😅そう思っていたら、Twitter(X)で、AlFiさんとしまづさんが宣伝ツイートをリポストして下さった。 まだまだフォロワーの少ない僕にはとてもありがたい🙏Unityroomを見ると、数千とか万単位で遊ばれているゲームがあるけれど、早く僕もあれだけ遊ばれるゲームを作れるようになりたいものだ😊さて、最近は残業続きで開発も遅延していたけれど、ブログの更新も停滞していた。 月末に向けて、まだしばらくは繁忙期間なのだけど、それでも少しは余裕が出て…

  • Break Plate!

    さいきん残業ばっかりで、制作が遅々として進んでいなかったけれど、ようやく完成。 スタジオしまづさんの1WSSへの参加作品「Clash Plate」を改良して、Break Plate!を公開しました。前作では、Time .deltatimeをかけ忘れるという、あまりにも悔しい結果だった。 今回はそこをきっちりと修正。 それに、スコアゲームなのだから、スコアランキングが欲しくなり、PlayFabを利用してランキング機能を追加している。さらに、rocoさんの作品を見て、ゲットしてはいけない減点ポイントがある方が良いと思ったので、黒皿を追加。後半が単調に感じたので、皿湧きのタイミングを残り時間で調整す…

  • Unity+PlayFabでランキング機能を作る(2)

    Playfabでのランキング実装の続き。あのあと、色々と実験していて判ったことだが、 var guid=System.Guid.NewGuid(); でのGUID生成は、毎回起動のたびに行われるので、今のままでは起動するたびに、Playfabに新しいアカウントが登録されてしまう。 これは流石に都合が悪いので、ゲーム起動時のランキング取得は管理者用のアカウントで行い、ランキングインした時だけプレイヤーアカウントを生成するようにした。 これで、無数にアカウントが生成されるのを多少は制限できると思う。ゲーム終了時に今回のスコアと、取得しておいたランキングのスコアを比較してランキングインしたかどうかを…

  • Unity+PlayFabでランキング機能を作る(1)

    前回も書いたけど、ニフクラでのランキングはどうにも、しっくりこなかったので、Playfabでのランキング実装をやってみることにした。まずはPlayfabのアカウント登録だが、僕の環境では普通に検索すると、AzurePlayFabが先頭に来てしまうが、とりあえずこれは別物。 PlayFabのアカウント登録は、ここになります。https://developer.playfab.com/en-us/sign-up利用料金は非常に難解で、僕には理解しきれませんでしたが、オンラインサロンの皆に聞いた限りでは、料金請求された事がないそうなので、そこまで気にする事はないのかも。 むしろ、料金発生するくらい遊…

  • ランキング機能を作りたい!!

    しまづさんの1Wジャムが終わり、僕の作品で不具合があったため、それを修正しようと思っています。 しまづさんのPC環境だと、ターゲットの移動と弾の回転が早すぎて、まともな操作ができていなかった。 これはTime.deltaTimeで解決できると思う。ほかには、 ゲーム中盤〜後半にかけて、ちょっと単調なままなのが面白みにかけたので、それも解決したいし、 他の人の作品で取ってはいけないもの、例えば減点するか持ち時間が減るようなNGターゲットも導入したいと思った。あと、痛感したのが、得点ゲームなら、やっぱりランキング機能が欲しいということ! せっかくなので、これをまず最初に導入してみようと思う。二フク…

  • 1Wジャム:Clash!Plate!

    スタジオしまづさんの1Wゲームジャムへ作品を出展しました😆unityroom.com皿割りシューティングです。 今まで学んできた要素を詰め込めるだけ詰め込んでみました。 InputSystem でキーボードでもマウスでもコントローラーでも遊べるようにできました。 ちょっと操作しづらいけどスマホでも遊べちゃいます。皿を割った時に出る時の得点表示は、最後まで苦労したところ。 何せ、今まで3DでUIを使ったことがなくて、座標をどういうふうにしたら良いのか分からない。 nekojara.city を参考にやってみたけれど、なぜかUIの座標が桁違いな値になってしまう。 ちょうど、今週の水曜が、しまづさん…

  • Unity:速度が早すぎて貫通!の対策

    皿割りゲームを作っていて、どうにも不満が。弾の速度が遅くて、どうしても弾を撃つタイミングが難しい。かといって弾を早くすると、colliderの判定が間に合わず、貫通してしまう問題が発生してしまう。Rigidbodyの衝突判定の設定を変更する方法もあるみたいだけど、どうせなら、いっそcoliider判定をやめてRaycastで判定することにしてみた。 RaycastHit[] hits; private void Shoot() { //表現として弾を発射する。 GameObject _bullet = Instantiate(Bullet,transform.position,transfor…

  • 1Wジャム参加!

    しまづさんの1Wゲームジャム。 www.youtube.com決められたテーマに沿ったゲームを一週間で作成するイベント。前回のUnityroomのジャムは、まだ勉強不足だったから断念したんだけど、今回は参加することにした。 テーマは「割る」 発表の瞬間に湧いたイメージは、皿🤣ということで、サイドビューアクションゲームは、ちょっとお休みして、皿割りゲームを作ってました。youtu.be勢いに任せて、ここまで作りました😆ざっくり作った様で、今まで学んできた要素が結構ちりばめられてます😁 InputSystemでキーボード、ゲームパッドにも対応させてます✌️ あとちょっと微調整して完成かな〜 時間制…

  • サイドビューアクションゲームを作ろう(14):遠隔攻撃してくる敵

    レベルアップもできる様なったので、罠をサクッと作成。youtu.beこの辺りは特に悩む事もなく実装できる様になったのが嬉しい😄 ダメージをあたえるダメージトラップと、一撃死のデストラップを作成する。 とりあえず、現段階では動作はアニメーション機能に任せることにした。次は遠隔攻撃してくる敵。 実はこれも、そんなに悩まずに実装できた。 基本の動きは他のEnemyと同じなので、他のEnemyのスクリプトをちょこちょこっと改造するだけで良い。 違うのは、遠隔攻撃の矢を生成してやるのと、生成時のEnemyの向きに応じて、矢の向きを変える事、そして、矢の方向に動かしてやること。まず、アーチャーのスクリプト…

  • サイドビューアクションゲームを作ろう(13):レベルアップ(下書き)

    アイテムに引き続き、レベルアップ機能を作成した。 といっても、エフェクトなどはまだ勉強していないので、とりあえず今日のところは下書き状態に留めた。レベルアップだけならば簡単で、要は経験値が、次のレベルに必要な分量溜まっていたら、経験値を0化して、各ステータスを上昇。次のレベルに必要な経験値を更新してやれば良い。Item ManagerでアイテムやEnemyの経験値加算処理するように組んでいるが、 これだと、Item Managerで経験値管理までしなくてはならない。 なので、レベルアップの処理は、EXPバーのPlayerEXP_BarとGame Managerに任せる事にした。EXPバーに任せ…

  • サイドビューアクションゲームを作ろう(12):アイテム生成完成

    ブログへのスクリプトコードの記載方法だけど、迷い迷って、結局、はてなブログの特権である、「はてな記法」に頼る事にした。 もっといい方法が見つかれば、そっちに変えるかもしれないけど、しばらくはこれでやってみようと思う。 さて、サイドビューアクションゲームの続きだけど、暫定だったアイテム生成を完成させた。ちょっと悩んだけど、ScriptableObjectのEnemy Data Tableに、それぞれのEnemyのアイテム出現率を設定した。 敵を倒したタイミングで、EnemyからItem ManagerにEnemy Noを渡し、 Item Managerは受け取ったEnemy Noを使って、Ene…

  • サイドビューアクションゲームを作ろう(11):アイテム効果

    今日は昨日作成したアイテムに効果を実装する。 昼間のうちに考えておいた構想は、ざっくりと、こんな感じ。 ・ItemGeneratorをItemManagerに改名・アイテムの効果の分類を作成・ItemDataのScriptableObjectにアイテムの効果分類と効果数値を追加。・アイテムを取得した時、ItemManagerのGetItemメソッドで処理するようにする。・ダメージ表示の仕組みで、アイテム効果を表示させる。 ItemManagerの改名やら、ScriptableObjectの改造やらはサクッと完成したけれど、ダメージ表示の仕組みでアイテム効果を表示させるのが、何気に大改造だった。…

  • サイドビューアクションゲームを作ろう(10):アイテム生成

    敵に倒され、敵を倒しと、できる様になったので、次は敵を倒した時にランダムでアイテムを出す機能を実装する事にした。 ぼんやりと考えていたのが、ItemDataを作っておき、そこにGameObjectを格納しておく。 敵を倒したタイミングで、ItemGeneratorが、乱数で出現アイテムを決め、ItemDataからGameObjectを取得してきて、敵の位置にInstantiateさせる。 倒した敵によって出現しやすいアイテムを決めてやれば、雑魚からは雑魚いアイテム、中ボスからは良いアイテムを出しやすくさせることができるだろう。 ItemGeneratorは他のステージでも使い回すためにシングル…

  • サイドビューアクションゲームを作ろう(9):UnityActionでHPバーを制御する。

    敵を倒せる様になったので、今度はプレイヤーも倒されるようにした。 Sliderを使ったHPバーはシューティングゲームで作成した事があるので、今回はSprite Rendererを使った方法。 基本的な方法はSliderと同じ。Sprite Rendererはlocalscaleを変化させてバーの増減を表す。 作ってみた感じ、自分としては、Sprite Rendererの方が扱いやすく感じた。 さらに、今回は以前から実験をしようと残課題にしていた、Unity Actionを実装してみた。 HPバーの更新をUpdateメソッドから切り離すための実装である。 プレイヤー側のスクリプト(今回の話題に関…

  • サイドビューアクションゲームを作ろう(8):落ちる床と敵を倒す

    今日は移動床に引き続き、落ちる床の実装と、敵を倒せるようにする。 落ちる床の仕組みも、れーさんのサイトを参考に作るわけだけど、移動床の時と同じく、接地判定の方法が異なるので、そのままでは使えない。 なので、単純に落ちる床のcolliderにプレイヤーが接触したら、落ちる床の落下フラグをonにする様にした。 これだと、プレイヤーが下や横から落ちる床に触れても、床が落ちてしまうけど、落ちる床ってのは、そもそも不安定ものだし😁ってことで、これでよしとした🤣 そして落ちる床のレイヤーは地面と同じにした。 これだとプレイヤー側のスクリプトは何もいじる必要がなくなる。 次に敵を倒せるようにする機能実装。 …

  • サイドビューアクションゲームを作ろう(7):移動床(修正後)

    昨日の移動床の続き。 移動床に乗ったプレイヤーに、慣性の法則なんて便利なものは働かないので、プレイヤーが滑り落ちてしまう。 今日はこの修正を行おう。 昨日記載した通り、修正方法はざっくり3通りある。 ①移動床に摩擦をかけて、プレイヤーがひこずられる様にする。 ②プレイヤーを移動床と親子関係にしてしまう。 ③移動床に乗っている時は、移動床の速度を常にプレイヤーの速度に足してやる。 結局、れーさん方式の3で解決させる事にした。 れーさんの方式のコードをそのまま持ってきたいところだけど、接地判定の方法が、れーさんのコードは、子オブジェクトのcolliderで判定させているのに対して、自分のコードは、…

  • サイドビューアクションゲームを作ろう(6):移動床(修正前)

    バーチャルコントローラーが完成したので、次は移動床を作成。 その前に、ダメージ表現と追従カメラをサクッと実装する😁 この辺りは、だいぶ、他の人の記事の内容が理解できる様になってきているのか、割とあっさり実装できる様になった。 でも、移動床は、ちょっと一味違うようだ。 床を移動させるのは問題ではない。 色々とやり方はあるけれど、移動する床だけなら、簡単に実装できる。 youtu.be 問題は、色々な記事にあったように、移動床に乗ったプレイヤーに慣性の法則が適用されないので、プレイヤーが横ずれしているように見えること。 解決策は、 ①移動床に摩擦をかけて、プレイヤーがひこずられる様にする。 ②プレ…

  • Unity:InputSystemの導入。バーチャルコントローラーの完成

    昨日の残課題だった、InputSystemのInput Actions Assetを使ったボタンのon/offの取得の仕方。 今日もあっちこっちの動画や記事を読み漁っていたら、なんと、あっさり解決してしまいそうな動画を見つけました。 www.youtube.com 7:40あたりに、まさしく今一番知りたかった事が、ズバッと説明されてました🤣 この動画、何回か見ていたはずなのに、今のいままで真価に気づけなかった〜😩 目的のものしか見えてないという、視野狭窄なのは中々治らないなぁ〜😅 ともかく、これでやり方は理解できたので、早速、実験。 Input Actions AssetにJump、Defen…

  • Unity:InputSystemの導入。バーチャルコントローラー

    今日も引き続き、InputSystemの勉強。 ただし、今日はいよいよサイドビューアクションゲームにInputSystemを導入して、バーチャルコントローラーを作成してみた。 参考にさせて頂いたのは、下記の2つの動画 www.youtube.com www.youtube.com InputSystemの導入自体は、想定以上に簡単。 ちょっと戸惑ったのは、Unityのバージョンが2022.3.7で、InputSystemのバージョンが1.6.3だと、Input ManagerとInputSystemの併用にデフォルトで設定される事と、 コンポーネントにPlayer Inputを追加した後で、「…

  • Unity:Input Systemの前準備

    Input Systemについて、色々と記事を読んでみたが、どうにもGetAxisに相当するものが見つけられない。 で、考えた結果、GetAxisに相当するものがないなら、それに類似する動きを作ってしまえばいいんじゃない?😁 というわけで、まずは、今のスクリプトをよく見てみる。 移動開始と加速はGetAxisの効果を使っておらず、走り始めてからの時間(runTime)と、AnimationCurveから現在の速度を算定している。 これなら、GetAxisがなく0か1かの世界になっても、問題はなさそう。 問題は止まる時。 今はUpdateでGetAxisの値を判定し、停止か右移動か左移動かを判定…

  • Unity:Input Systemの勉強

    ゆくゆくはスマホで操作できる様にしたい。 そのためには、マルチプラットフォームを前提にする必要があるわけで。 それには、どうしても複数種類の操作に対応する様にプログラミングが必要😅 そのための手段として、UnityにはInputSystem なるものが用意されているらしい。 早速、あちこちのサイトを読み漁り、下記の動画を参考に、早速実験。 www.youtube.com 恐ろしく簡単に導入することができたが、ここで、ちょっと困った😣 今までのGetAxisに相当するものが、どうしても見つからない。 ジョイスティック操作だと0〜1の間の小数点が取得できるが、キーボード操作だと1か0しか取得するこ…

  • サイドビューアクションゲームを作ろう(5):壁蹴りジャンプ実装

    10月になりました。 子供の頃に齧ったBASICと、Visual BASICくらいしかプログラミグを知らない状態で、Unityに飛び込んで、はや3ヶ月とちょっと。 多少なり知識も増え、できることが少しずつ増えてきたような気がします。 しかし、汲めども尽きぬ泉の如き、Unityの奥深さ。 まだまだ学ぶことが多いので、楽しくなってきます😄 サイドビューアクションゲームですが、今月中に以下の実装をしたいと思っています。 ・二段ジャンプ・壁蹴りジャンプの実装。・ローリング状態の実装。・ダメージを数値で表示する機能の実装。・音楽、効果音の選定・移動床の実装。・落ちる床の実装。・アイテムの実装。・Scri…

  • サイドビューアクションゲームを作ろう(4):防御実装

    今日は防御姿勢の実装。 プレイヤーとして導入したアセットに、盾を構えている状態のアニメーションがあるので、それを実装しよう。 次に防御に成功する条件を考える。条件は簡単に以下の3点にした。 ① 盾を構えた状態になっている。 ② 盾を構えている方向から攻撃を受ける。 ③ 敵の攻撃力が盾で防げる防御力以下。 厳密にいえば、盾の範囲に攻撃が当たった時とすべきなんだろうけど、これは今後の課題にした。 実際の導入について、①の条件「盾を構えた状態になっている。」は、防御姿勢のアニメーションへの遷移条件になっている、アニメーションパラメーターを取得してくれば良い。 これは、GetBoolで簡単に取得できる…

  • PLiCyの公式マガジンに『The beginning of Shooting Game』が掲載されました😄

    plicy.net なんと、PLiCyの今週号に、僕の習作『The beginning of Shooting Game』が掲載されました😄 ありがたいやら、恥ずかしいやらですが、Unityを勉強していることが、ほんの少しでも認められたようで、素直に嬉しいかぎりです。 今作っているサイドビューアクションも含めて、もっと、面白くて楽しいゲームが作れるように頑張ります!!

  • Unity:継承

    サイドビューアクションゲームで、攻撃判定を作ろうとして、はたと困った。 武器にColliderをつけて、敵にぶつけ、敵のダメージメソッドを呼ぶためには、敵のスクリプト名が必要になる。 ところが、敵が一種類ならともなく、何種類も敵がいれば、当然、敵のスクリプト名も変わってくる。 例として、SlimeにSlime Managerスクリプトがあり、ここにダメージ処理用メソッドOndamageがある。 BanditにはBandit Managerというスクリプトがあり、ここにもダメージ処理用のOndamageがある場合、 Colliderがぶつかった敵のスクリプトのOndamageメソッドを呼ぶために…

  • Unity:ScriptableObject

    サイドビューアクションで、ちょっとした困り事ができたので、それを調べる間、ScriptableObjectの実験をする事にした。 ScriptableObjectというのは、要は、シーンやスクリプトとは別扱いの、データベースのようなものらしい。 例えば、ある種類、仮にスライムが、スライムA ・スライムB・スライムC・スライムD・・・と多く存在するとして、そのスクリプトにMaxHPと処理用のhpの2つの変数を記載すると、それぞれのスライムのスクリプトに、MaxHPという同じ変数が存在する事になるため、メモリを無駄に消費してしまう事になる。 そこで、共通の数値であるMaxHPは、他のデーターベース…

  • サイドビューアクションゲームを作ろう(3):落下判定と敵の実装

    どのようなサイドビューアクションを作るか、おおよそのイメージが固まってきた。 昨日までのプレイヤーでは、ちょっとイメージと違うので、プレイヤー用のアセットを、Hero Knight - Pixel Artに変更。 れーさんの、最初は下書きで作成する。という、教えに背いたから、いきなりのこのやりおなしである😅 ・・・でも、まぁ、イメージって大事だし😆(反省してないw) アニメーションも、最初から作り直しになったけど、ちょうどいい復習になったから、これはこれで良しとしよう🤣 で、昨日のMedieval Warrior Pack 2にも、Hero Knight - Pixel Artにも落下中のスプ…

  • サイドビューアクションゲームを作ろう(2):Tilemap Collider 2Dの設定方法備忘録

    昨日に引き続き、サイドビューアクションの作成。 今日はTilemapに、Tilemap Collider 2Dをつけて、コライダータイプの設定をしようと、昼間に、色々なサイトや記事を読んで調べていた。 帰宅して、いざ、実践!と、思ったが、コライダータイプの設定をどこでやるのか、ちょっと悩んだので、備忘録として、設定方法を記載しておきます。 ① まず、コライダータイプですが、コライダーと名がついているくせに、設定するのは、タイルパレッド側です。 タイルパレッドを作成する時に、保存したフォルダを開きます。 この時、タイルパレッドを作成する元になった画像と混乱しそうですが、こちらではコライダータイプ…

  • サイドビューアクションゲームを作ろう(1)

    UniRXの実験は、とりあえず終えたので、新たな習作の作成を開始しました。 しまづさんの「Unity超簡単!サイドビューアクション編」と、れーさんの「ゲームの作り方チャンネル」で学習した内容で作成していくつもりです。 www.youtube.com www.youtube.com 紹介しているアセットでも良かったけれど、せっかく作成するんだから、やっぱりお好みの雰囲気が良いんで、アセットストアから、フリーのGothicVania Church Packと、Medieval Warrior Pack 2をインストールしてきた。 この辺り、れーさんの、最初は下書きで作成しようという教えに、いきなり…

  • UniRXの勉強:値の変化を通知する。

    VScodeが正常になったので、保留にしていた、オブザーバーの実験とUniRXの勉強をやろう。 オブザーバーについて色々とサイトで調べていたが、今日のところは実験できるほどには理解できなかった😭 なので、しまづさんのyoutubeを参考にUniRXの勉強をやる事にした。 www.youtube.com www.youtube.com オブザーバーに比べて、なんて分かりやすい!😊 オブザーバーのデザインパターンには主要な要素が4つあるらしく、そのうちに2つが、 Subject 状態が変化するオブジェクト。状態の変化があった際、Observerに通知するメソッドを持っている。 Observer S…

  • Unity+VScode+新プロジェクトで、VScodeの動きがおかしくなりました。

    どうにか解決したから良かったものの、一時はどうなる事か思った😅 こないだまで作成していたシューティングゲームが、公開完了して、ようやく、一段落したので、オブザーバー機能の実験をしようと、新しいプロジェクトを作成したのだけど、新しいプロジェクトではVScodeの動きがおかしい。 デバックしてくれないし、何やら色々エラーが出ている。 試しに、シューティングゲームのプロジェクトを開いてみると、こちらは正常。 スクリプトにわざとエラーを加えても、ちゃんと指摘してくれる。 UnityやVScodeを再起動してもだめ。 Macをシャットダウンして再起動してもだめ。 左がシューティングゲームのプロジェクト、…

  • 作成したゲームを公開するサイトと備忘録

    せっかく作成したゲーム。 遊んでもらえないと悲しすぎる。遊んでもらうためには、公開する必要があるわけで。 とはいえ、いきなりSteamやApp Storeは敷居が高すぎる。 ありがたい事に、自作ゲームを公開できる場所は、他にも色々あるようで、 僕は下記の3つのサイトを利用する事にしました。 ・Unity Room ・ふりーむ! ・PLicy 「ふりーむ!」は公開までに、しっかり数日ほど審査が入るので、面倒ではあるけれど その分、信用は高いイメージですね。 各サイトへのアップロード方法ですが、基本的にはそのサイトの説明を参照する事になるんですけど、細かいところがちょっと分かりにくい感じなので、備…

  • 習作2作目:The beginnig of Shooting Game

    習作2作目のシューティングゲームが、ようやく完成しました😆 unityroom.com 右も左も分からない1作目に比べれば、だいぶ納得できるプログラムができる様になった気がします。 学んで実装できたもの。 ・Coroutineを使用 今にして思えば、こんなものすら知らなかったわけで😅 ・Game Managerをシングルトンで実装。 まだまだ研究の余地ありですが、なんとなく有用性は理解できたと思う。 ・Object Pool これは便利。 ただ、まだ、どれくらいの頻度から使用すべきか理解しきれていないと思う。 これも、まだ研究の余地あり。 ・Audio Mixier スタジオしまづさんのオンラ…

  • シューティングゲームを作ろう!(5):クリア画面を作る

    習作のシューティングゲーム制作も、いよいよ終盤。 今日はゲームクリアというか、BOSSを倒した後の挙動を作成した。 エンドレスループにするつもりなので、BOSSを倒したらレベルを少し上げて、リスタートする様にした。 レベルは弾の速さに関係しているので、2周目は少し難易度が上がる感じだ。 youtu.be ・・・で、いきなりバグってる😅 リスタートで残機が回復してるじゃないか🤣 この修正は明日だな〜

  • シューティングゲームを作ろう!(4):BOSSを作る

    一週間ほど旅行で家に帰れず、さらにその後、コロナに罹患するという運の無さ😭 で、すっかり間が空いてしまったが、ようやく体調も落ち着いてきたので、ゲーム制作を再開することにした。 習作2作目のシューティングゲームもそろそろ完成させてしまおう。 という事で、今日は放置していたBOSSの作り込みを、みっちりやった。 雷レーザーが3本とも同じアニメなので、スクリーンショットだとちょっと絵面が悪い😅 明後日からの三連休で、一気に完成できると良いなぁ😆

  • シングルトンの罠?シーン遷移後のオブジェクトへの参照再セット

    一夜明けて、もやもやしながら仕事を終えて、さて、昨夜の不具合オンパレードの解決を考えよう。 まずは何が起こっているのか確認する。 Game Managerのアタッチが外れまくってるわ・・・ エラーが出まくってるわ。 Game Managerはシングルトン構成にしているのだが、リスタート(シーンのリロード)で、他のオブジェクト達が再生成している様なものだから、アタッチが外れてしまうのだろうか。 ちなみに、シングルトン構成を外してみると、リスタートでアタッチが外れる事はなく、何も不具合は発生しなかった。 だからと言って、シングルトン構成を止めるのは勿体無いので、シーンのリロード時に他のオブジェクト…

  • 残機設定とゲームオーバー実装の果てに・・・不具合だらけ〜

    Unity関連の記事を読んだり、オンラインサロンで講義を受けたりしていると、 オブザーバーの実験や、デリゲートの勉強と、色々とやりたい事が増えてくる。 ・・・肝心の習作がちっとも進まないという😅 来週はちょっと旅行で1週間ほど家に帰れないので、Unityが触れない。 なので、できるうちに少しでも習作を進めることにした。 敵にやられた時の挙動は作ったので、次は残機とゲームオーバーの実装。 そんなに難しい事ではないと思うので、サクッと作る。 まずは、前回の、敵にやられた時の無敵モードでいじったOnTriggerEnter2DerEnter2Dに 残機判定を加える。(15行〜19行) 残機がないなら…

  • シューティングゲームを作ろう!(3)

    昨日までで音量設定は実装できた。 習作としては、これで完成させても良いのかもしれないけれど、ちょっと欲が出てきて、敵にやられた時に残機があればゲームを継続できる様にしたくなった。 そこで、ふと考えた。 敵にやられた時にプレイヤーをDestroy(gameObject)してしまうと、諸々のObjectにアタッチしているプレイヤーが全部外れてしまうのではないか・・・? 全部に新しいプレイヤーを、再セットさせるのは面倒だな🤨 ・・・だったら、Destroyせずに隠してしまえばいい!🤩 という事で、まずは敵にやられた時の、プレイヤー再登場と、しばらくの間、無敵状態にするスクリプトを組んでみた。 テスト…

  • AudioMixerの活用

    昨日、Pauseを実装したので、今日は昨日の本命のAudio Mixerのスクリプト作成。 Sliderを使ってAudioMixerのボリュームをコントロールするのは、 Slider.valueを取得して、それをAudio Mixerのボリュームに代入してやるだけで、簡単に実装できた。 ただ、これだと起動時にSliderがAudio Mixerのボリュームを反映していないので、 Start時にAudio Aixerのボリュームを取得して Slider.valueに代入するという、さっきとは逆の工程を加える。 これで、Slider表示時に、今のボリュームを表示させることができた。 音量調整の画面…

  • Pause機能の実装

    しまづさんのサロンでオーディオに関する説明があり、Audio Mixerの活用や、Audio設定について学んだので、早速、作成中のシューティングゲームに取り込んでみることにした。 他の人の作品でスライダーでボリューム調整できる仕組みをみて、作り方を知りたいと思っていたので、ちょうど良かった。 Audio Mixerを作成し、BGMとSEを関連付けるまではできたが、スライダーでボリューム調整する段階で、ちょっと困った事に。 ボリューム調整画面を表示させている間もゲームが進んでいるため、ボリューム調整中に敵にやられるという、なんだこりゃ😫な状態になってしまう。 そのため、まずはPause機能を作る…

  • Macを一週間使ってみて

    Mac mini m2 proを買って、約1週間経ちました。 Unityとブラウジング環境をMacに移植して、Windows PCはこの一週間、1回しか起動していない状態です。 今まで使っていたWindowsPCはなんだかんだで10年くらい使っているので、いきなり最新 PCになれば、それはまあ、アプリの起動や処理は早いわ🤣 人生初のMacということで、まだまだ慣れないことだらけです。 特に、メニューバーがメインになっているアプリのメニューに切り替わるのが、どうにも気持ちが悪い😅 あれ?このアプリ、メニューはどこよ?・・・ああ、こっちか。と、まだ戸惑うことがあります。 ただ、Dockやインストー…

  • Prefabのアタッチが外れる(2)

    昨日に引き続き、ヒエラルキー上でBulletに、オブジェクトプールのあるBullet Managerをアタッチしておいたのに、BulletをPrefabフォルダに入れてPrefab化したタイミングで、このアタッチが外れてしまう問題の対策。 昨日見つけた記事にある、メソッドの引数を利用する。から考えてみた。 工程は以下の2つ。 1. Bulletのスクリプトに初期設定用のメソッドで、Bullet Managerへの参照をセットできるように作っておく。 2. Bulletを生成する時に、このメソッドを呼び出し、引数でBullet Managerへの参照を渡す。 まずは、Bulletのスクリプト 1…

  • Prefabのアタッチが外れる。

    以前の「ObjectPoolの勉強」で実験したオブジェクトプールを実装してみた。 最初は自機に実装してみたが、ボスの弾のプールも作るにあたって、プールをあちこちに作るより、いっそ、弾管理用のBullet Managerを作成して、プールもまとめてみたくなった。 Bullet Managerを空オブジェクトで作成し、弾のPrefabにBullet Managerをアタッチしようとするが、これがどうしてもできなかった。 ヒエラルキーに生成した後のオブジェクトにはアタッチできるが、それをPrefab化した時点でBullet Managerがアタッチから外れてしまう。 調べてみると、Prefabとヒエ…

  • Unity LINQの実験とEnumerable型について

    配列を調べていて、linqなるものを見つけた。 色々調べていて、すごい分かり易いサイトを見つけたので、早速実験してみることにした。 www.midnightunity.net OfTypeという、「要素を指定した型でフィルター」というのが、どのような結果になるのかDebug.Logで表示させてみる。 結果は以下の様な感じ。 どうやら、結果はEnumerable型になっているようだ。 この型、調べてみたが、今ひとつ腑に落ちない。 どうやら、インターフェースで参照型の様なので、データーの実態というよりは、 List内の該当の情報のメモリアドレスが格納されているのかもしれない。 この結果をListや…

arrow_drop_down

ブログリーダー」を活用して、甘肉さんをフォローしませんか?

ハンドル名
甘肉さん
ブログタイトル
Unity勉強中!あこがれだったプログラマーに今からなろう!
フォロー
Unity勉強中!あこがれだったプログラマーに今からなろう!

にほんブログ村 カテゴリー一覧

商用