かさたな日記 主にUnityを使った制作記録。書いてる人は初心者です。一緒に頑張ろう。 2020-12-27T19:06:16+09:00 kasatanet Hatena::Blog hatenablog://blog/6653812171394826770 Unity1weekJam 『あける』編 hatenablog://entry/26006613670632075 2020-12-27T19:06:16+09:00 2020-12-27T19:09:17+09:00 unityroomさんの1週間ゲームジャムにまたまた参加しました! 今回のお題は『あける』。投稿したゲームはこちらです。 https://unityroom.com/games/donotdonutunityroom.com12/27の 20:00からプレイできるようになるのでよかったら遊んでね。 <p>unityroomさんの1週間ゲームジャムにまたまた参加しました!<br /> 今回のお題は『あける』。</p><p>投稿したゲームはこちらです。<br /> <a href="https://unityroom.com/games/donotdonut">https://unityroom.com/games/donotdonut</a><cite class="hatena-citation"><a href="https://unityroom.com/games/donotdonut">unityroom.com</a></cite></p><p>12/27の 20:00からプレイできるようになるのでよかったら遊んでね。</p> kasatanet Unity1weekJam に参加しました。『ふえる』編 hatenablog://entry/26006613616908256 2020-08-19T21:30:54+09:00 2020-08-19T21:31:41+09:00 またまたunity1weekに参加させてもらいましたー。 今回のお題は『ふえる』で、提出したゲームはこちら。unityroom.com 謎の生物がかじってふえるアクションゲームです。 よかったら遊んでね。 <p>またまたunity1weekに参加させてもらいましたー。<br /> 今回のお題は『ふえる』で、提出したゲームはこちら。</p><p><iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Funityroom.com%2Fgames%2Fgaburi" title="暴食のガブリオン | フリーゲーム投稿サイト unityroom" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://unityroom.com/games/gaburi">unityroom.com</a></cite><br /> 謎の生物がかじってふえるアクションゲームです。<br /> よかったら遊んでね。</p> kasatanet Unity1weekJam に参加しました。『密』編 hatenablog://entry/26006613565711364 2020-05-11T19:30:00+09:00 2020-05-15T12:36:09+09:00 またまたunityroom主催のunity1weekJamに参加しました。 みんなでUnityを使用して1週間でゲームを制作・公開するイベントです。 期間は2020年04月27日(月) 00:00〜2020年05月3日(日) 20:00、 お題は現状の世相を反映してか、時事ネタで『密』でした。https://unityroom.com/unity1weeks 提出したゲームはこちら。 きりたんが回転斬りするゲームこと『隠密きりたん』。 よかったら遊んでね。 unityroom.com今回はありがたいことに5/10/20:00の結果発表時点で 総合7位、楽しさ2位、操作性1位を頂きました。 とは… <p>またまたunityroom主催のunity1weekJamに参加しました。<br /> みんなでUnityを使用して1週間でゲームを制作・公開するイベントです。<br /> 期間は2020年04月27日(月) 00:00〜2020年05月3日(日) 20:00、<br /> お題は現状の世相を反映してか、時事ネタで『密』でした。</p><p><a href="https://unityroom.com/unity1weeks">https://unityroom.com/unity1weeks</a></p><br /> <p>提出したゲームはこちら。<br /> きりたんが回転斬りするゲームこと『隠密きりたん』。<br /> よかったら遊んでね。<br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Funityroom.com%2Fgames%2Fmitsukiri" title="隠密きりたん | フリーゲーム投稿サイト unityroom" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://unityroom.com/games/mitsukiri">unityroom.com</a></cite></p><p>今回はありがたいことに5/10/20:00の結果発表時点で<br /> 総合7位、楽しさ2位、操作性1位を頂きました。<br /> とはいえ順位は今後も変動するもので固定ではありません。<br /> (なので記念にスクショしておこう)</p><br /> <br /> <p>■作成過程<br /> 1日目:<br /> お絵かきがスランプ状態のため練習に時間を割こうと思い、<br /> 参加は見送るつもりだったので製作はしていませんでした。</p><br /> <p>2日目:<br /> なんとなく息抜きにきりたんのドット絵を新調。<br /> せっかくなので何かに使おうということになりました。<br /> よろしい、ならばジャムだ。</p><br /> <p>3日目:<br /> 既に出遅れているので企画に時間を使っては間に合わない。<br /> なのでもう割と普通のアクションで行こう。<br /> きりたんが走って飛んで跳ねればそれだけで楽しいハズ。<br /> キリタンカワイイヤッター!</p><p>とはいえ逆に言えば<br /> 走って飛んで跳ねるだけで楽しくなくてはいけないのである。</p><p>ここで前作「ピコピコきりたんアイランド」のボツウェポン、<br /> すくりゅーあたっく、もとい回転斬りを使おう。<br /> 何ならメインにしようということになりました。</p><p>お題をどうするかが問題だけど壁に貼り付けるし、<br /> 回転斬りは密着して当てれば連続ヒットするから<br /> クリアということで。</p><p>この辺りで和風の雰囲気でまとめることに決めました。</p><br /> <p>4日目:<br /> 個々の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>類が意外と使い回せないことに気づく。<br /> ここからが本当の地獄だ。</p><br /> <p>5日目:<br /> 画面の解像度設定を320x180(前作)→480x270にしたため<br /> ボイクリシャドー(敵キャラ)の皆さんもドットを打ち直すことに。<br /> あとみゅかりさん出したかったので書きました。</p><br /> <br /> <p>6日目:<br /> せっせとステージを作る。<br /> 敵キャラの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>を頑張って書く。</p><p>あと前回<a class="keyword" href="http://d.hatena.ne.jp/keyword/RTA">RTA</a>動画を作ってもらって<br /> とても有難く嬉しかったので今回はゲーム内にも<br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%BF%A5%A4%A5%E0%A5%A2%A5%BF%A5%C3%A5%AF">タイムアタック</a>ランキング機能を付けたい。</p><br /> <p>7日目:<br /> そんな気はしていたけど間に合わない。<br /> 妥協点を探す。ボス戦はオミットせざるを得ない。<br /> シャドーきりたんは犠牲になったのだ...</p><br /> <p>8日目:<br /> 色々妥協しつつ何とかゲームループを完成。</p><br /> <p>9日目:<br /> テストしてビルドしてテストして提出。</p><br /> <p>というわけで二日遅れの提出となりました。</p><br /> <br /> <br /> <p>■技術的(?)なコト<br /> 正直今回は何ら新しいことには挑戦していません。<br /> 見た目通りの2D<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D7%A5%E9%A5%C3%A5%C8%A5%D5%A5%A9%A1%BC%A5%DE%A1%BC">プラットフォーマー</a>です。<br /> それでも一番気を使った操作性を評価して頂けたのは嬉しかったです。</p><br /> <p>プレイヤー等のオブジェクトの移動はTransform.translateで直接移動させて、<br /> 地形への<a class="keyword" href="http://d.hatena.ne.jp/keyword/%C0%DC%BF%A8">接触</a>判定や重力による落下は自前の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>で行っています。</p><p>※Rigidbodyは付けてKinematicにしておきます。<br /> Rigidbodyのないオブジェクトは「基本的に動かないもの」とされるため<br /> 移動させた場合、再計算されて負荷になる場合があります。</p><p>ゲーム的に素直な(?)キャラの移動、とくにジャンプの挙動が<br /> Unity標準の物理演算ではどうしても感覚的にしっくりこなかったので<br /> 何やら面倒なことをしています。</p><p>わたしは雰囲気でゲームを作っている。</p><br /> <br /> <br /> <p>■反省点<br /> やはり期間に間に合わなかったこと。<br /> 1日遅れで開始して2日オーバーなので結局1週間には収まっていません。<br /> ジャムには何回か参加しているのですが、中々ペースが掴めずにいます。<br /> 予定を立ててもその通りに行かなくて経験不足を感じています。<br /> 開発終盤はいつも修羅場。</p><br /> <p>アカリソウシャドーの耐久力は2にしておくべきだったかも。<br /> 要はパラメータの調整が甘かったであろうこと。</p><br /> <p>イタコ姉さまがまた出せなかったこと。</p><br /> <br /> <br /> <p>■まとめ<br /> 個人的に前作アイランドで気になってた部分を<br /> ブラッシュアップできたことは良かったと思います。<br /> アイランドの続編はこれとは別に作る予定です。<br /> ウナちゃん出したいな。ウナきりはいいぞ。</p><br /> <p>次の目標はグラフィック面ですね。3Dも含めて。<br /> もっと絵が描ければ表現が広げられるのですが、<br /> こればかりは一朝一夕ではどうにもならず...。<br /> もちろん見た目がすべてではないけれど、<br /> 第一印象になる部分はやはり大事。</p><p>上位のゲームは中身がしっかりしていることはもとより、<br /> ビジュアルで世界感が表現できているのは強いなと感じました。<br /> ワタシハあの力が欲しい。</p><br /> <p>ランキング機能を入れた<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%BF%A5%A4%A5%E0%A5%A2%A5%BF%A5%C3%A5%AF">タイムアタック</a>は<br /> かなりの盛況でちょっと驚いております。<br /> たくさん遊んで頂いてありがとうございます。<br /> 上位陣の記録は速すぎてもう作者でも追いつけません。</p><br /> <br /> <p>さいごに...<br /> シャドーきりたんは回転斬りを256発当てると倒せます。</p><br /> <br /> <p>以上です。<br /> まとまりも内容も薄い文を最後まで読んで頂き<br /> ありがとうございました。<br /> ではまた次回作で。</p> kasatanet Unity1weekJam に参加しました。 hatenablog://entry/26006613530379928 2020-03-05T13:31:24+09:00 2020-03-05T13:31:24+09:00 毎度おなじみunityroomさんの1週間でゲームを作ろう企画、 Unity1weekJamに参加しました。 今回のお題は『逆』。ということでデッキをすり減らしながらダンジョンを逆走する デッキ圧縮型(?)カードゲーム「Reversal Dungeon」をリリースしました。 良かったら遊んでくださいな。 Reversal Dungeon | フリーゲーム投稿サイト unityroom <p>毎度おなじみunityroomさんの1週間でゲームを作ろう企画、<br /> Unity1weekJamに参加しました。<br /> 今回のお題は『逆』。</p><p>ということでデッキをすり減らしながらダンジョンを逆走する<br /> デッキ圧縮型(?)カードゲーム「Reversal Dungeon」をリリースしました。<br /> 良かったら遊んでくださいな。<br /> <a href="https://unityroom.com/games/reversaldungeon">Reversal Dungeon | &#x30D5;&#x30EA;&#x30FC;&#x30B2;&#x30FC;&#x30E0;&#x6295;&#x7A3F;&#x30B5;&#x30A4;&#x30C8; unityroom</a></p> kasatanet 自分用Unityメモ:滞空時間と距離から放物線の射出速度を得る hatenablog://entry/26006613469156800 2019-11-21T20:52:57+09:00 2019-11-21T20:55:10+09:00 横スクアションで投擲型の敵キャラを作りたい。(ピッケルマンみたいな) バランス調整のためにプレイヤーに向かって飛んでくるまでの時間を指定したい。 というわけで着弾までの時間を指定して、放物線の射出速度を得るスクリプト。 (ターゲット取得等の処理を省いたりしているので実際のプロジェクト中のものとはちょっと異なります) /// <summary> /// 滞空時間から射出速度を得ます /// </summary> /// <param name="time"></param> /// <returns></returns> private Vector2 GetAimThrowVelocity(f… <p>横スクアションで投擲型の敵キャラを作りたい。(<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D4%A5%C3%A5%B1%A5%EB">ピッケル</a>マンみたいな)<br /> バランス調整のためにプレイヤーに向かって飛んでくるまでの時間を指定したい。<br /> というわけで着弾までの時間を指定して、放物線の射出速度を得る<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>。<br /> (ターゲット取得等の処理を省いたりしているので実際のプロジェクト中のものとはちょっと異なります)</p> <pre class="code lang-cs" data-lang="cs" data-unlink> <span class="synComment">/// </span><span class="synIdentifier">&lt;</span><span class="synStatement">summary</span><span class="synIdentifier">&gt;</span> <span class="synComment">/// 滞空時間から射出速度を得ます</span> <span class="synComment">/// </span><span class="synIdentifier">&lt;/</span><span class="synStatement">summary</span><span class="synIdentifier">&gt;</span> <span class="synComment">/// </span><span class="synIdentifier">&lt;</span><span class="synStatement">param</span><span class="synIdentifier"> </span><span class="synType">name</span>=<span class="synConstant">&quot;time&quot;</span><span class="synIdentifier">&gt;&lt;/</span><span class="synStatement">param</span><span class="synIdentifier">&gt;</span> <span class="synComment">/// </span><span class="synIdentifier">&lt;</span><span class="synStatement">returns</span><span class="synIdentifier">&gt;&lt;/</span><span class="synStatement">returns</span><span class="synIdentifier">&gt;</span> <span class="synType">private</span> Vector2 GetAimThrowVelocity(<span class="synType">float</span> time, Transform start, Transform target) { <span class="synStatement">if</span> (time &lt;= <span class="synConstant">0</span>) { <span class="synStatement">return</span> Vector2.zero; } <span class="synComment">//ターゲットとの相対距離</span> <span class="synType">float</span> distance = Vector2.Distance(start.position, target.position); <span class="synComment">//距離と滞空時間から初速度と角度を求める</span> <span class="synType">float</span> speed = Mathf.Sqrt(Mathf.Pow(distance / time, <span class="synConstant">2</span>) + Mathf.Pow(-Physics.gravity.y * time / <span class="synConstant">2</span>, <span class="synConstant">2</span>)); <span class="synType">float</span> angle = Mathf.Atan(-Physics.gravity.y * Mathf.Pow(time, <span class="synConstant">2</span>) / (<span class="synConstant">2</span> * distance)) * Mathf.Rad2Deg; Vector2 aimVelocity; aimVelocity.x = Mathf.Cos(angle * Mathf.Deg2Rad) * speed; aimVelocity.y = Mathf.Sin(angle * Mathf.Deg2Rad) * speed; <span class="synStatement">return</span> aimVelocity; } </pre><p>得られる発射速度は右向きのものです。<br /> 左に向かって打つ場合はx方向を反転させてください。</p> kasatanet 自分用Unityメモ:EventTriggerの実行順序 hatenablog://entry/26006613454967033 2019-10-25T00:41:41+09:00 2019-10-25T00:41:41+09:00 今思い付きでカードゲームを作っていて 手札からのドラッグ&ドロップ処理をEventTriggerで実装しているのですが ちょっと実行順序で引っかかったのでメモしておきます。 とりあえず使ったとこだけ PointerDown ↓ BeginDrag ↓ Drag ↓ PointerUp ←これが最後だと思ってた ↓ Drop ↓ DragEnd <p>今思い付きでカードゲームを作っていて<br /> 手札からのドラッグ&ドロップ処理をEventTriggerで実装しているのですが<br /> ちょっと実行順序で引っかかったのでメモしておきます。<br /> とりあえず使ったとこだけ</p><br /> <p>PointerDown<br /> ↓<br /> BeginDrag<br /> ↓<br /> Drag<br /> ↓<br /> PointerUp ←これが最後だと思ってた<br /> ↓<br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/Drop">Drop</a><br /> ↓<br /> DragEnd</p> kasatanet Unity1week「あつめる」に参加しました。 hatenablog://entry/17680117127215629208 2019-07-08T23:47:20+09:00 2019-07-08T23:48:11+09:00 7/1~のunit1week お題「あつめる」に参加しました! 残念ながら1週間では間に合わなったのですが、 本日リリースできたのでURLを置いておきます。 ゲームボーイ風味のシンプルローグライクゲームです。 1プレイ5分のお手軽さなので、よかったら遊んでね。 unityroom.com <p>7/1~のunit1week お題「あつめる」に参加しました!<br /> 残念ながら1週間では間に合わなったのですが、<br /> 本日リリースできたのでURLを置いておきます。<br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B2%A1%BC%A5%E0%A5%DC%A1%BC%A5%A4">ゲームボーイ</a>風味のシンプル<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%ED%A1%BC%A5%B0%A5%E9%A5%A4%A5%AF%A5%B2%A1%BC%A5%E0">ローグライクゲーム</a>です。<br /> 1プレイ5分のお手軽さなので、よかったら遊んでね。<br /> <iframe src="https://hatenablog-parts.com/embed?url=https%3A%2F%2Funityroom.com%2Fgames%2Fmikone" title="みこね道中 | フリーゲーム投稿サイト unityroom" class="embed-card embed-webcard" scrolling="no" frameborder="0" style="display: block; width: 100%; height: 155px; max-width: 500px; margin: 10px 0px;"></iframe><cite class="hatena-citation"><a href="https://unityroom.com/games/mikone">unityroom.com</a></cite></p> kasatanet 3ヶ月ぶり hatenablog://entry/17680117127166830244 2019-05-25T18:20:46+09:00 2019-05-25T18:20:46+09:00 なんだかとても間が空いてしまっていますね。 最近はイラストとモデリングの練習を主にやっております。 プログラム学習の足が鈍ってしまうのは是とはしないけど こっちはこっちで必要なことなのです。というわけで、 あと一ヶ月程度はデザイン面の練習に時間を割きたく思います。 <p>なんだかとても間が空いてしまっていますね。<br /> 最近はイラストと<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E2%A5%C7%A5%EA%A5%F3%A5%B0">モデリング</a>の練習を主にやっております。<br /> プログラム学習の足が鈍ってしまうのは是とはしないけど<br /> こっちはこっちで必要なことなのです。</p><p>というわけで、<br /> あと一ヶ月程度はデザイン面の練習に時間を割きたく思います。</p> kasatanet 新作「マモノブレイド」製作中です hatenablog://entry/17680117126978088201 2019-02-23T17:45:43+09:00 2019-02-23T17:45:43+09:00 年明けから全く記事を更新してないので申し訳ないのですが、 現在新作のゲームを開発中です。タイトルは「マモノブレイド」(仮ジャンルはカードゲーム風味RPGローグライト沿えです。 ツイッターの方には度々制作状況をあげているのですが こちらには特に何も書いていなかったので報告しておきます。それとは別に3Dアクションとシューティングを製作中なのですが、 同時制作すると進まなくなるのでまずは1つ完成を目指します。 <p>年明けから全く記事を更新してないので申し訳ないのですが、<br /> 現在新作のゲームを開発中です。タイトルは「マモノ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D6%A5%EC%A5%A4%A5%C9">ブレイド</a>」(仮</p><p>ジャンルはカードゲーム風味<a class="keyword" href="http://d.hatena.ne.jp/keyword/RPG">RPG</a>ローグライト沿えです。<br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A5%A4%A5%C3%A5%BF%A1%BC">ツイッター</a>の方には度々制作状況をあげているのですが<br /> こちらには特に何も書いていなかったので報告しておきます。</p><p>それとは別に3Dアクションとシューティングを製作中なのですが、<br /> 同時制作すると進まなくなるのでまずは1つ完成を目指します。</p> kasatanet あけましておめでとうございます2019 hatenablog://entry/10257846132694616477 2019-01-02T01:52:50+09:00 2019-01-02T01:52:50+09:00 もう2日になっちゃいましたが あけましておめでとうございます。 今年もよろしくお願いします。昨年はインプットの年でした。 今年はアウトプットの年にして、 アプリ含む作品を色々リリースしていきたい! <p>もう2日になっちゃいましたが<br /> あけましておめでとうございます。<br /> 今年もよろしくお願いします。</p><p>昨年はインプットの年でした。<br /> 今年はアウトプットの年にして、<br /> アプリ含む作品を色々リリースしていきたい!</p> kasatanet 2ヶ月空いている... hatenablog://entry/10257846132685879587 2018-12-17T00:52:30+09:00 2018-12-17T00:52:30+09:00 なんだかんだで気がついたら2ヶ月も空いてしまいました。 色々落ち着いたら現在の開発で得た豆知識を まとめておきたいと思います。 <p>なんだかんだで気がついたら2ヶ月も空いてしまいました。<br /> 色々落ち着いたら現在の開発で得た豆知識を<br /> まとめておきたいと思います。</p> kasatanet 自分用Unityメモ:Resources フォルダのこと hatenablog://entry/10257846132651255449 2018-10-11T22:16:16+09:00 2018-10-11T22:16:16+09:00 UnityにはResources という特定フォルダ以下にあるアセットを 簡単に参照・取得できる機能があるのですが、 それに関するベストプラクティスが「使わないこと」だそうな oh......というのも、Resourcesフォルダ以下にあるアセット、 それから中身から参照されているアセットは ビルドの際に一つのファイルに纏められるとのこと。 そのため起動時のロード時間が長くなってしまうそうな。あとメモリの管理がちょっと大変になってしまう。 使わなくなった部分を都度unloadしていけばいいのだけれど 把握して管理するのが中々難しい。 というわけで、 現在この辺りの構造の改修をしているのでした。 <p>UnityにはResources という特定フォルダ以下にあるアセットを<br /> 簡単に参照・取得できる機能があるのですが、<br /> それに関するベストプ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%E9%A5%AF">ラク</a>ティスが「使わないこと」だそうな oh......</p><p>というのも、Resourcesフォルダ以下にあるアセット、<br /> それから中身から参照されているアセットは<br /> ビルドの際に一つのファイルに纏められるとのこと。<br /> そのため起動時のロード時間が長くなってしまうそうな。</p><p>あとメモリの管理がちょっと大変になってしまう。<br /> 使わなくなった部分を都度unloadしていけばいいのだけれど<br /> 把握して管理するのが中々難しい。</p><br /> <p>というわけで、<br /> 現在この辺りの構造の改修をしているのでした。</p> kasatanet UIちょっとメモ hatenablog://entry/10257846132645604363 2018-10-04T19:54:00+09:00 2018-10-04T19:54:00+09:00 UIをきれいに並べたいときは Content Size Fitter とGrid Layout Group Vertical Layout Group Horizontal Layout Groupを使うと良いみたい...なので後で試そう。 <p>UIをきれいに並べたいときは<br /> Content Size Fitter と</p><p>Grid Layout Group<br /> Vertical Layout Group<br /> Horizontal Layout Group</p><p>を使うと良いみたい...なので後で試そう。</p> kasatanet 結局2weekかかったよ hatenablog://entry/10257846132631199337 2018-09-15T17:24:03+09:00 2018-09-16T02:56:51+09:00 結局2週間かかっちゃったけど、公開できました。 あつなつ | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう時間かかった割にシンプルなミニゲームですが、 よかったら遊んでくださいな。 じゃあ、次の制作に入ろうか。 <p>結局2週間かかっちゃったけど、公開できました。<br /> <a href="https://unityroom.com/games/atunatu">&#x3042;&#x3064;&#x306A;&#x3064; | &#x7121;&#x6599;&#x30B2;&#x30FC;&#x30E0;&#x6295;&#x7A3F;&#x30B5;&#x30A4;&#x30C8; unityroom - Unity&#x306E;&#x30B2;&#x30FC;&#x30E0;&#x3092;&#x30A2;&#x30C3;&#x30D7;&#x30ED;&#x30FC;&#x30C9;&#x3057;&#x3066;&#x516C;&#x958B;&#x3057;&#x3088;&#x3046;</a></p><p>時間かかった割にシンプルな<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DF%A5%CB%A5%B2%A1%BC%A5%E0">ミニゲーム</a>ですが、<br /> よかったら遊んでくださいな。</p><br /> <p>じゃあ、次の制作に入ろうか。</p> kasatanet 3ヶ月越し...だと.... hatenablog://entry/10257846132618852890 2018-09-02T20:18:26+09:00 2018-09-02T23:25:02+09:00 気がついたら3ヶ月も空いている。 この間、色々とインプットに必死でした。 そろそろアウトプットしていかねば...ということで、明日からのunity1week、 手持ちのアイデアで参加できそうなら進捗状況でも 載せていければと思います。前回は結局出せなかったからね...。 <p>気がついたら3ヶ月も空いている。<br /> この間、色々とインプットに必死でした。<br /> そろそろアウトプットしていかねば...</p><p>ということで、明日からのunity1week、<br /> 手持ちのア<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%C7%A5%A2">イデア</a>で参加できそうなら進捗状況でも<br /> 載せていければと思います。</p><p>前回は結局出せなかったからね...。</p> kasatanet Unity1week:【ギリギリ】編 その1 hatenablog://entry/17391345971651953608 2018-06-07T19:51:48+09:00 2018-06-07T19:51:48+09:00 unityroomさん主催の1週間でゲームを作るイベント、 unity1weekにまたまた参加させてもらってます。 今回のお題は【ギリギリ】。たまにはいつもと違う雰囲気のものを……ということで、 2Dのモノクロドットで制作しています。 マップチップはこんな感じ。 デストラップを避けながらどこまで進めるか、という アクションゲームになる予定です。間に合えば…… <p>unityroomさん主催の1週間でゲームを作るイベント、<br /> unity1weekにまたまた参加させてもらってます。<br /> 今回のお題は【ギリギリ】。</p><p>たまにはいつもと違う雰囲気のものを……ということで、<br /> 2Dのモノクロドットで制作しています。<br /> マップチップはこんな感じ。<br /> <span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/k/kasatanet/20180607/20180607195048.png" alt="f:id:kasatanet:20180607195048p:plain" title="f:id:kasatanet:20180607195048p:plain" class="hatena-fotolife" itemprop="image"></span></p><p>デストラップを避けながらどこまで進めるか、という<br /> アクションゲームになる予定です。</p><p>間に合えば……</p> kasatanet hatenablog://entry/17391345971642281335 2018-05-07T13:36:25+09:00 2018-05-07T13:36:25+09:00 新作は5月中に行きたかったけど、ちょっと難しいかな。 こういうのは焦って急いでもいいことないので地道に行きませう。 <p>新作は5月中に行きたかったけど、ちょっと難しいかな。<br /> こういうのは焦って急いでもいいことないので地道に行きませう。</p> kasatanet 今作っているもの。 hatenablog://entry/17391345971636648214 2018-04-20T00:53:08+09:00 2018-04-22T21:48:50+09:00 気がついたらまた1ヶ月空いている......。 いろいろ新しいことを覚えてはいるのですが、 こう、手短な記事にできそうなちょうどいい小ネタが 中々みつからないのですよ。よよよ... 簡単攻撃エリア表示の作り方、とかはちょっと良さそうだケド。 ■今作っているもの一覧 全部並行制作です。行けそうなトコから仕上げようの精神。 各制作で得た知識と技術は相互にフィードバックして、 汎用クラスとフレームワークを拡張していこう。 ・ニンジャ 50%くらい ・天使ちゃん横スク 40%くらい ・3Dコンボアクション(勇者のやつ) 20% 基本動作は出来たけど設計するトコ多いので... ・シューティング 30%く… <p>気がついたらまた1ヶ月空いている......。<br /> いろいろ新しいことを覚えてはいるのですが、<br /> こう、手短な記事にできそうなちょうどいい小ネタが<br /> 中々みつからないのですよ。よよよ...<br /> 簡単攻撃エリア表示の作り方、とかはちょっと良さそうだケド。</p><br /> <p>■今作っているもの一覧 <br /> 全部並行制作です。行けそうなトコから仕上げようの精神。<br /> 各制作で得た知識と技術は相互にフィードバックして、<br /> 汎用クラスと<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%D5%A5%EC%A1%BC%A5%E0%A5%EF%A1%BC%A5%AF">フレームワーク</a>を拡張していこう。</p><br /> <p>・ニンジャ 50%くらい<br /> ・天使ちゃん横スク 40%くらい<br /> ・3Dコンボアクション(勇者のやつ) 20% 基本動作は出来たけど設計するトコ多いので...<br /> ・シューティング 30%くらい<br /> ・ストラテジー的なの ?% 制作3日目。5月末にはリリースしたい。</p> kasatanet 1ヶ月ぶりの... hatenablog://entry/17391345971628633746 2018-03-23T18:55:53+09:00 2018-03-24T15:12:06+09:00 気づいたら1ヶ月近く空いてましたね...。 最近は忙しくてブログのネタを探せていませんが 制作はそこそこ順調です。でももう少し更新頻度を上げたいな。 #追記 最近、変なスパムコメントが来るようになったので調べたところ はてなブログに対する同様のスパム報告が多数見つかりました。文面は外国語で1行目に記事が役に立ちました的な内容、 2行目以降に怪しげなURL。 コメントごとに微妙に文面が変えてありました。 こういうスパムってまだあるんだね...。同様の内容のスパムが既に10件近く来ていて さすがに良い気がしないので、しばらくコメント欄は ユーザーのみの設定にさせてもらうことにします。こんな場末のブ… <p>気づいたら1ヶ月近く空いてましたね...。<br /> 最近は忙しくてブログのネタを探せていませんが<br /> 制作はそこそこ順調です。</p><p>でももう少し更新頻度を上げたいな。</p><br /> <p>#追記<br /> 最近、変なスパムコメントが来るようになったので調べたところ<br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%CF%A4%C6%A4%CA%A5%D6%A5%ED%A5%B0">はてなブログ</a>に対する同様のスパム報告が多数見つかりました。</p><p>文面は外国語で1行目に記事が役に立ちました的な内容、<br /> 2行目以降に怪しげなURL。<br /> コメントごとに微妙に文面が変えてありました。<br /> こういうスパムってまだあるんだね...。</p><p>同様の内容のスパムが既に10件近く来ていて<br /> さすがに良い気がしないので、しばらくコメント欄は<br /> ユーザーのみの設定にさせてもらうことにします。</p><p>こんな場末のブログにまで来るんだから<br /> 迷惑してる人も多いだろうな...。</p> kasatanet Unity1week:【当てる】編 hatenablog://entry/17391345971620412558 2018-02-28T02:37:58+09:00 2018-03-09T01:30:48+09:00 ■参加しました unityroomさんの1週間ゲームジャムにまたまた参加させていただきましたー。 今回のお題は『当てる』。シンプルなお題だけに色々とネタは出てきそうだったのですが、 なんだかんだで手を付けられたのが水曜日。 だが諦めるにはまだ早い...ということでシンプルな的あてゲームを作りました。もう少し時間があったらおっp(略 を当てるゲームを作ってたよ。 こう、アフ○ダイA的な路線で。 ■完成品はコチラ。 ユニティちゃんのナイフ投げマスター! | 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう※現在、ブラウザによっては一投目の命中の瞬間だけ処… <p>■参加しました<br /> unityroomさんの1週間ゲームジャムにまたまた参加させていただきましたー。<br /> 今回のお題は『当てる』。</p><p>シンプルなお題だけに色々とネタは出てきそうだったのですが、<br /> なんだかんだで手を付けられたのが水曜日。<br /> だが諦めるにはまだ早い...ということでシンプルな的あてゲームを作りました。</p><p>もう少し時間があったらおっp(略 を当てるゲームを作ってたよ。<br /> こう、アフ○ダイA的な路線で。</p><br /> <p>■完成品はコチラ。<br /> <a href="https://unityroom.com/games/uniknifemaster">&#x30E6;&#x30CB;&#x30C6;&#x30A3;&#x3061;&#x3083;&#x3093;&#x306E;&#x30CA;&#x30A4;&#x30D5;&#x6295;&#x3052;&#x30DE;&#x30B9;&#x30BF;&#x30FC;&#xFF01; | &#x7121;&#x6599;&#x30B2;&#x30FC;&#x30E0;&#x6295;&#x7A3F;&#x30B5;&#x30A4;&#x30C8; unityroom - Unity&#x306E;&#x30B2;&#x30FC;&#x30E0;&#x3092;&#x30A2;&#x30C3;&#x30D7;&#x30ED;&#x30FC;&#x30C9;&#x3057;&#x3066;&#x516C;&#x958B;&#x3057;&#x3088;&#x3046;</a></p><p>※現在、ブラウザによっては一投目の命中の瞬間だけ処理落ちするという<br />  問題が発生しております。エディタ上や<a class="keyword" href="http://d.hatena.ne.jp/keyword/firefox">firefox</a>なら大丈夫なんだけど。<br />  ...原因はなんと書く分かってる...ので、後日直します。</p><p>#追記<br /> ぬぬぬ、目星をつけていた部分が原因ではなかったようだ...<br /> 調査中につきもうしばらくお待ちをををを</p><br /> <p>■DoTweenってスゲー<br /> 今回は有名アセットのDoTweenに大活躍していただきました。<br /> マトの動きはこれでPath制御しております。<br /> Sequenceという機能を使って逐次処理をすることができるのですが、<br /> それが大いに役に立ちました。</p><br /> <p>■命中したときの動作<br /> Collider上の衝突箇所は以下で得られます。<br /> マトは動いてる間はTriggerになってました。</p> <pre class="code lang-cs" data-lang="cs" data-unlink> <span class="synType">void</span> OnTriggerEnter(Collider other) { Bullet bullet = other.gameObject.GetComponent&lt;Bullet&gt;(); <span class="synStatement">if</span> (!bullet) { <span class="synStatement">return</span>; } <span class="synComment">//接触箇所を検出 </span> Vector3 hitPos = other.ClosestPointOnBounds(<span class="synStatement">this</span>.transform.position); <span class="synComment">//命中時の処理</span> HitBullet(bullet, hitPos); } </pre><p><br /> あとは衝突箇所とマトの中心の座標のZ座標を揃えてからXY平面上での距離を<br /> Vector2.Distanceで求めて、その距離に応じてスコアを決めています。フツーですね。<br /> ちなみにスコアは100、50、30、10、0の5段階しかありません。<br /> ねらって10点取るのは100点取るより難しいぞ。</p><p>実は投げた方のナイフは衝突時点で非アクティブになっていて<br /> マトのオブジェクトとセットになっている「刺さったナイフ」オブジェクトを<br /> 衝突位置に表示するという処理になってます。</p><br /> <p>■そのほか開発の中身的なこと。</p><p>正直言って開発手法を語れるほどの技量がございません。<br /> コードもそんなに早く書けるわけでもないので<br /> ちょっとだけでも開発を早くする方法として<br /> なるべく使い回せる汎用的なコードを書くことを心がけています。</p><p>具体的には機能別にマネージャ的なクラスをシングルトンで作成しておいて<br /> 新規プロジェクトを作ったらとりあえず放り込んで使います。<br /> (ナンニデモシングルトンヨクナイ</p><p>以下は今回の使った分です。</p><br /> <p>Config.cs……ScriptableObject形式になっています。<br /> 決定音やキャンセル音、ウィンドウのスプライトや色などの設定を保持しています。<br /> データベース系は他にも色々あったりします。</p><p>SaveManeger.cs…<a class="keyword" href="http://d.hatena.ne.jp/keyword/Json">Json</a>形式でのセーブ処理をしてくれるクラスです。<br /> 今回は音量設定しかセーブしてません。実はスコアセーブしてないんです。</p><p>InputManager.cs……入力イベントを扱うクラスです。<br /> ドラッグやクリック、キー入力に個別に反応させることができます。<br /> 中身はUnityEventで実装しています。</p><p>Sound.cs...BGMやSEの再生用です。(ホントは2D用想定。音源とリスナーを設定できるSound3Dってクラスもあるけど今回はお休み。<br /> 音量などの設定も受け持っています。<br /> Monobeheiverは継承していませんが、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B3%A5%F3%A5%B9%A5%C8%A5%E9%A5%AF%A5%BF%A1%BC">コンストラクター</a>で空オブジェクトを生成して<br /> AudioSource<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B3%A5%F3%A5%DD%A1%BC%A5%CD%A5%F3%A5%C8">コンポーネント</a>を8個ほど装備しています。</p><p>Emitter.cs......パーティクルを再生、プールするクラスです。これはヨクナイ名前....。<br /> これもMonobeheiverを継承してないので空オブジェクトを生成して<br /> 子オブジェクトとしてパーティクルのオブジェクトを確保します。<br /> <br /> ....そして恐らく今回の一投目に一瞬止まる現象の犯人。<br /> 動的に<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%B9%A5%BF%A5%F3%A5%B9">インスタンス</a>できるからって横着したせい.......先に<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%B9%A5%BF%A5%F3%A5%B9">インスタンス</a>しておけばよかったのだ<br /> #追記:犯人ではなかった....。真犯人は誰だ</p><p>Unit.cs.......自機や敵キャラの基底クラスです。HPなどの情報を持ってたり<br /> アニメーションさせるためのメソッドを持ってたりします。<br /> 今回はユニティちゃんだけ。</p><p>UnitManager.cs.......ユニットにIDを割り振ったりして管理してるマネージャです。<br /> Unit.csの中のUpdateMe()メソッドをこいつのUpdate()で呼び出すことで<br /> 全体のUpdate()の回数を減らします。</p><p> 余談ですがUnityの処理の関係で、<br /> Update()は書いてあるだけで、もし中身がなくても、一定の処理時間を使うみたい。<br /> 必要のないUpdate()は消しておこう。<br /> たくさん呼ぶ必要がある場合はマネージャからまとめて呼ぼう。<br /> ボクは今年に入ってから知りました。</p><p>BulletMaker.cs........弾を<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%B9%A5%BF%A5%F3%A5%B9">インスタンス</a>してプールして管理してるマネージャです。<br /> BulletShooter.cs.......弾を発射するクラスです。軌道や速度、貫通弾やホーミングの設定ができます。<br /> Bullet.cs……弾本体です。弾というか攻撃判定なのでパンチとかにもついてたりします。<br /> 今回は投げるナイフ一本だけです。</p><br /> <p>■まとめ<br /> 今回は時間の関係でシンプルなものを作ろうと思って作ったわけですが<br /> やっぱりもっと何かできたのではないかという心残りは結構あったりします。<br /> ただ、最近はしばらく完成品を出せていなかったので、良い息抜きになりました。<br /> ある程度の適切な締め切りが決まっていたほうがなんだかんだスムーズに制作できますね。</p><p>ボクはとても神経質なタチなので細かいところがいつも気になるのです。<br /> UIの動きとか、触ったときのレスポンスの感じとか。<br /> 今作っているゲームでもカメラの回転が気持ちよくないので、かれこれ三週間ほど悩んでいます。</p><p>でも締切が決まっているなら残り時間から逆算して、ある程度で先に進まざるを得ない。<br /> 自主的に締め切りを定めて作ったほうがいいかもしれないと思う今日このごろでした。</p> kasatanet 自分用Unityメモ:skyboxをスクリプトから変更する hatenablog://entry/17391345971616161037 2018-02-13T23:17:54+09:00 2018-02-13T23:17:54+09:00 RenderSettings.skybox = 任意のマテリアル RenderSettings.skyboxの値を変更することで 現在のシーンのskyboxを変更することができます。普段は動的に変更したいことってあんまりないのですけれど、 今回はステージごとにシーンを制作しているとシーンの数が膨大になってしまうので 一つのシーンのステージの中身だけを変更、 それに伴い背景も変えるという方法を使うことにしました。 <pre class="code lang-cs" data-lang="cs" data-unlink> RenderSettings.skybox = 任意のマテリアル </pre><p>RenderSettings.skyboxの値を変更することで<br /> 現在のシーンのskyboxを変更することができます。</p><p>普段は動的に変更したいことってあんまりないのですけれど、<br /> 今回はステージごとにシーンを制作しているとシーンの数が膨大になってしまうので<br /> 一つのシーンのステージの中身だけを変更、<br /> それに伴い背景も変えるという方法を使うことにしました。</p> kasatanet 1ヶ月ぶりの…… hatenablog://entry/17391345971615509868 2018-02-11T23:03:03+09:00 2018-02-11T23:03:03+09:00 気がついたら前回の記事から1ヶ月経っていました。開発の方はそこそこ順調なのですが、 記事にできそうなマメ知識、的なのがあんまり出てこないのですよ。よよよ。今月はまたUnity1weekがあるので その前後にまた記事を更新したいと思います。 今回のお題は何だろなー <p>気がついたら前回の記事から1ヶ月経っていました。</p><p>開発の方はそこそこ順調なのですが、<br /> 記事にできそうなマメ知識、的なのがあんまり出てこないのですよ。よよよ。</p><p>今月はまたUnity1weekがあるので<br /> その前後にまた記事を更新したいと思います。<br /> 今回のお題は何だろなー</p> kasatanet Unityアセット紹介:ProtoPack hatenablog://entry/8599973812335585014 2018-01-09T22:22:36+09:00 2018-01-09T22:22:36+09:00 ニンジャが出て登るゲームを開発中の傘棚です。 ホントはお正月企画のミニゲームだったのですが、 割と面白くなりそうだったので、しっかり作り込むことになりました。作りたいゲームのアイデアはたくさんあるけど、 体は一つしかないので順番に作っていきましょう。ただ、しばらくは(ネタバレの関係で)記事に出来そうなことがないので アセットの紹介コーナーなどを初めてみることにしました。 掘り出し物か、そうでないかはアナタ次第。基本的に自分で買った、ダウンロードして試したもののみの紹介となりますので 偏りがあるのはご了承願います。 で、1回目はこちら。フリーアセットの【Proto Pack】です。 アイコンから… <p>ニンジャが出て登るゲームを開発中の傘棚です。<br /> ホントはお正月企画の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DF%A5%CB%A5%B2%A1%BC%A5%E0">ミニゲーム</a>だったのですが、<br /> 割と面白くなりそうだったので、しっかり作り込むことになりました。</p><p>作りたいゲームのア<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%C7%A5%A2">イデア</a>はたくさんあるけど、<br /> 体は一つしかないので順番に作っていきましょう。</p><p>ただ、しばらくは(ネタバレの関係で)記事に出来そうなことがないので<br /> アセットの紹介コーナーなどを初めてみることにしました。<br /> 掘り出し物か、そうでないかはアナタ次第。</p><p>基本的に自分で買った、ダウンロードして試したもののみの紹介となりますので<br /> 偏りがあるのはご了承願います。</p><br /> <p>で、1回目はこちら。フリーアセットの【Proto Pack】です。<br /> <iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/50444/widget-wide?aid=1011l3q69" style="width:600px; height:130px; border:0px;"></iframe></p><p>アイコンからは中身がわかりづらいのですが、<br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AB%A1%BC%A5%C8%A5%A5%A1%BC%A5%F3">カートゥーン</a>な、かわいい3Dモデルのセットです。<br /> プロトパックという名前の通り、アクションゲームの<br /> プロトタイピングに使えそうなモデルが一式揃っています。<br /> 回復アイテム用のハートや、コイン、宝石、鍵、宝箱、レンガのブロックや扉、<br /> 探検家風の<a class="keyword" href="http://d.hatena.ne.jp/keyword/SD%A5%AD%A5%E3%A5%E9">SDキャラ</a>とかわいいスライムまで。<br /> もうリンク先のページを見に行ってもらったほうが早いカモ。</p><p>モデルは低ポリでモバイル向けな感じで、<br /> 簡単なアクションゲームならこのセットだけで作れそうな勢い。<br /> プロトタイピングのみならず、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AB%A1%BC%A5%C8%A5%A5%A1%BC%A5%F3">カートゥーン</a>調のゲームならそのままぴったり。<br /> 製作中の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%AF%A5%B7%A5%E7%A5%F3RPG">アクションRPG</a>でもお世話になっております。</p><br /> <p>以上、1回目のアセット紹介コーナーでした。<br /> うーむ、画像とかなくて申し訳ない。。。</p> kasatanet あけましておめでとうございます2018 hatenablog://entry/8599973812332757991 2018-01-03T14:10:56+09:00 2018-01-03T21:33:11+09:00 ちょっと遅れてしまいましたが、あけましておめでとうございます。今現在、アプリのアイデアが3つほどあるので まずはそれを形にしていきたいなと思います。 今年もよろしくお願いします。 新年からアクションのすり抜け床を作っている かさたな <p>ちょっと遅れてしまいましたが、あけましておめでとうございます。</p><p>今現在、アプリのア<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%C7%A5%A2">イデア</a>が3つほどあるので<br /> まずはそれを形にしていきたいなと思います。<br /> 今年もよろしくお願いします。</p><p>  新年からアクションのすり抜け床を作っている かさたな</p> kasatanet Unityでゲーム制作:クリスマス編 hatenablog://entry/8599973812328844170 2017-12-22T18:19:37+09:00 2017-12-27T15:45:49+09:00 早いもので2017年も暮れかかり、世間はクリスマスムードですね。 というわけで、今回は『クリスマス』のテーマでゲームを作ってみました。【X'mas Painter】 https://unityroom.com/games/xmaspainter雪を降らせる魔法のソリを操って、 制限時間内に舞台となる街をなるべくたくさん白く塗りつぶす、 ペイントレーシングミニゲーム。....某ス○ラトゥーンみたいな感じ( おこがましい! よかったら遊んでくださいな。 発想としては 、 セールでアセット買ったので塗るゲーム作りたい ↓ クリスマスシーズン ↓ ホワイトクリスマス ↓ 雪で白く塗ってみよう!という連… <p>早いもので2017年も暮れかかり、世間はクリスマスムードですね。<br /> というわけで、今回は『クリスマス』のテーマでゲームを作ってみました。</p><p>【X'mas <a class="keyword" href="http://d.hatena.ne.jp/keyword/Painter">Painter</a>】<br /> <a href="https://unityroom.com/games/xmaspainter">https://unityroom.com/games/xmaspainter</a></p><p>雪を降らせる魔法のソリを操って、<br /> 制限時間内に舞台となる街をなるべくたくさん白く塗りつぶす、<br /> ペイントレーシング<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DF%A5%CB%A5%B2%A1%BC%A5%E0">ミニゲーム</a>。....某ス○ラトゥーンみたいな感じ( おこがましい!<br /> よかったら遊んでくださいな。</p><br /> <p>発想としては 、<br /> セールでアセット買ったので塗るゲーム作りたい <br /> ↓<br /> クリスマスシーズン<br /> ↓<br /> ホワイトクリスマス<br /> ↓<br /> 雪で白く塗ってみよう!</p><p>という連想だったのですが、<br /> 雪を積もらせるというア<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%C7%A5%A2">イデア</a>自体は<br /> 以前のUnity1weekの テーマ:積む のときからありました。<br /> ただ、そのときは色々あって製作時間が取れず間に合わなったので、<br /> (取りかかれたの最後の2日だったハズ...)<br /> 今回改めて挑戦という形になりました。<br /> とはいえ、1週間で全部作れたわけではないけどね!</p><br /> <p>今回、苦労した点は<br /> ペイント用のアセットのコードの読み解き(大変勉強になりました)と、<br /> ソリ、それを追いかけるカメラの挙動です。<br /> はい、全部じゃんとか言わない。</p><p>操作感はディフォルメされた<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%EC%A1%BC%A5%B7%A5%F3%A5%B0%A5%B2%A1%BC%A5%E0">レーシングゲーム</a>のような感じにしたかったので<br /> AddForce等ではなくて、velocityの数値を直接変更することで<br /> 加速・減速、各種挙動の制御を行っています。</p><p>このとき、変更する値はXZ面のみにしているので<br /> 上下へのジャンプや自由落下は物理挙動をそのまま使用できるようになっています。</p><p>わかった方もいらっしゃるかもしれませんが、参考元はカー○ィの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%A2%A5%E9%A5%A4%A5%C9">エアライド</a>です。<br /> 押し入れから<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B2%A1%BC%A5%E0%A5%AD%A5%E5%A1%BC%A5%D6">ゲームキューブ</a>を引っ張り出して遊び....研究しました。</p><p><a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A8%A5%A2%A5%E9%A5%A4%A5%C9">エアライド</a>といえば滑空。<br /> ふんわり気持ちよく滑空したい。<br /> 今回は結構簡単に作ってあります。</p> <pre class="code lang-cs" data-lang="cs" data-unlink><span class="synType">public</span> <span class="synType">float</span> flight; <span class="synComment">//重力に逆らうパワー</span> <span class="synType">private</span> Rigidbody myRigidbody; <span class="synComment">//どこかでコンポーネントをキャッシュしてね</span> <span class="synType">void</span> Update() { <span class="synComment">//velocityが下向きになったら滞空補正をかける</span> <span class="synStatement">if</span> (myRigidbody &amp;&amp; myRigidbody.velocity.y &lt; <span class="synConstant">0</span>) { myRigidbody.velocity += Vector3.up * flight * Time.deltaTime; } } </pre><p>落下状態になったら上方向に力を加えてあげてるだけです。<br /> 実際はマネージャからキャラのUpdateを行うようになっているのですが<br /> たくさんキャラが出るわけじゃないので直接Update()を書いていても<br /> あんまり変わんないと思います。</p><p>坂道によるジャンプは摩擦係数を下げる(Phisics Materialを差し替える)<br /> ことで勢いに応じて跳ね上がる感じになっています。</p><br /> <p>ホントは色々アイテムなども置きたかったのですが<br /> クリスマスを過ぎてしまいそうだったので今回はここで一応の完成としました。<br /> 遊びとしては気に入っているので<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%DE%A5%DB">スマホ</a>で動きそうならば<br /> 今後、発展型も作ってみたいと思います。</p><p>ところで、マップ上にいるペンギンさんは体当たりをすることで<br /> コロコロと転がります。転がっている間はペンギンさんにもペイント判定がつくので<br /> うまく利用すれば高得点が狙えるかもしれません。<br /> (ある程度速度が落ちるとペンギンさんは起き上がってまた歩きだします)</p><br /> <p>さて、今回もアセットを結構使わせていただいたので<br /> そのご紹介をしたいと思います。</p><br /> <p><iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/52190/widget-wide-light?aid=1011l3q69" style="width:600px; height:130px; border:0px;"></iframe><br /> 【Chrismas Gift】<br /> 無料のアセットです。<br /> 空飛ぶソリとプレゼント箱はここから使用させてもらってます。<br /> ソリはすごくきれいなのに頂点数は抑えめでとってもありがたい。</p><br /> <p><iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/13102/widget-wide-light?aid=1011l3q69" style="width:600px; height:130px; border:0px;"></iframe><br /> 【FREE Christmas Assets / Low Poly】<br /> こちらも無料のクリスマスアセットです。<br /> ふわふわな質感がすばらしい帽子を使わせていただきました。</p><br /> <p><iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/26286/widget-wide-light?aid=1011l3q69" style="width:600px; height:130px; border:0px;"></iframe><br /> 【Paint in 3D】<br /> 今回の要。<br /> 3Dオブジェクトにペイントできるアセットです。<br /> 使い方の説明は必要最小限、という感じでしたが<br /> コードの内容がとてもわかり易く、またとても丁寧にコメントされているので<br /> 理解するのは難しくありませんでした。<br /> ペインする機能のみならず、コードの書き方も勉強になりました。<br /> 付属している様々なサンプルシーンもありがたいです。</p><br /> <p><iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/68480/widget-wide-light?aid=1011l3q69" style="width:600px; height:130px; border:0px;"></iframe><br /> 【More Effective Coroutines [PRO]】<br /> コルーチンを効率化・高速化してくれるアセットです。<br /> Monobeihaverを継承してないクラスからも呼び出せるようになったりして便利。<br /> コルーチンは各所で使用しているので重宝しております。</p><br /> <p><iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/1894/widget-wide-light?aid=1011l3q69" style="width:600px; height:130px; border:0px;"></iframe><br /> 【Amplify Color】<br /> カメラにアタッチするだけでカラーグレーディングを行える人気アセットです。<br /> ふんわりした暖かめの雰囲気を演出するのに活躍してくれています。</p><br /> <p><iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/88140/widget-wide-light?aid=1011l3q69" style="width:600px; height:130px; border:0px;"></iframe><br /> 【Friendly & Clean UI】<br /> シンプルでスッキリした雰囲気が魅力のUIキットです。<br /> 各種マークの詰め合わせのフォントが付属しているのもポイント。</p><br /> <p><iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/8105/widget-wide-light?aid=1011l3q69" style="width:600px; height:130px; border:0px;"></iframe><br /> 【Toony Colors Pro 2】<br /> 前回の大型セールで買ったアセットの一つ。<br /> アニメチックな雰囲気を演出できるトゥーンシェーダーです。<br /> 豊富なプリセットが付属しているだけでなく、<br /> 必要に応じてカスタマイズしたシェーダを出力できる機能もあります。</p><br /> <p><iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/74020/widget-wide-light?aid=1011l3q69" style="width:600px; height:130px; border:0px;"></iframe><br /> 【Cartoon Town - Low Poly Assets】<br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AB%A1%BC%A5%C8%A5%A5%A1%BC%A5%F3">カートゥーン</a>な雰囲気が可愛い、町のモデルのセットです。<br /> なんとなく某どう○つの森を彷彿とさせる感じ。<br /> ポリ数、頂点数ともに割りと抑えめなのでモバイルでも使えそうです。</p><p>買ったときはもう少し安かった気がするのですが、値上がりしちゃったのかなぁ。。。</p><br /> <br /> <p><iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/56515/widget-wide-light?aid=1011l3q69" style="width:600px; height:130px; border:0px;"></iframe><br /> 【Penguins】<br /> とってもかわいいペンギンさんのモデルです。<br /> かわいい以外に言うことはないのかというくらい可愛いです。</p><p>ここで紹介しているのはペンギンさんのみのアセットですが<br /> ボクは実はペンギンさん以外もセットのものを買っております。</p><br /> <p><iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/20869/widget-wide-light?aid=1011l3q69" style="width:600px; height:130px; border:0px;"></iframe><br /> 【Magic Arsenal】<br /> 各種魔法エフェクトの詰め合わせです。<br /> エフェクトの綺麗さもさることながら<br /> 効果音まで付属しているのがとっても使いやすくありがたいです。<br /> 製作中のゲームでも使用させていただいております。</p><br /> <p><iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/32416/widget-wide-light?aid=1011l3q69" style="width:600px; height:130px; border:0px;"></iframe><br /> 【DOTween Pro】<br /> 定番のTweenです。<br /> セールにてProバージョンを購入しました。<br /> 無料版との違いはエディタ画面でパスをセットできたり、<br /> 各種制御用の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B3%A5%F3%A5%DD%A1%BC%A5%CD%A5%F3%A5%C8">コンポーネント</a>が付属していることです。</p><p>今回は実はpro版ならではの機能というのは使用していないのですが、<br /> 今後、演出面で色々と使用できそうです。</p><br /> <p><iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/47276/widget-wide-light?aid=1011l3q69" style="width:600px; height:130px; border:0px;"></iframe><br /> 【Terrain To Mesh】<br /> Terrainを軽量化したMeshに変換できるアセットです。<br /> テクスチャも1枚にまとめて一緒に出力することができます。<br /> 頂点数等、かなりの軽量化になるのでモバイルでも使いやすくなります。</p><br /> <p><iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/10822/widget-wide-light?aid=1011l3q69" style="width:600px; height:130px; border:0px;"></iframe><br /> 【First Fantasy for Mobile】<br /> 様々なファンタジーシーンを演出できるアセットです。<br /> モデルやテクスチャはもちろんのことパーティクルまで付属しています。<br /> 今回は中央の木と地形のテクスチャリング、また降ってくる雪のエフェクトに使用させてもらっています。</p><p><iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/91853/widget-wide-light?aid=1011l3q69" style="width:600px; height:130px; border:0px;"></iframe><br /> 【Dynamic Starry Sky】<br /> 前回に引き続いて使用させてもらった<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AB%A5%A4%A5%C9%A1%BC%A5%E0">スカイドーム</a>ようシェーダです。<br /> グラデーション位置や星の数、またたきなどをカスタマイズできます。<br /> クリスマスな星空を演出するのにぴったりでした。</p> kasatanet 自分用Unityメモ:モデルの中心の座標を得る hatenablog://entry/8599973812325319391 2017-12-10T17:11:41+09:00 2017-12-16T13:49:57+09:00 Rendererからboundsを取得して、 モデルや画像の大きさと中心の座標を得ることができます。 Bounds bounds = GetComponentInChildren<Renderer>().bounds Vector3 center = bounds.center; 今回は3Dゼルダ風のZ注目モードを作ろうとしていたのですが ターゲットのpivotの位置によってはマーカーが変なところに表示されてしまいました。 (キャラの場合は足元とか...) ので、中央に表示するためには中央の位置を知る必要があったのでした。 <p>Rendererからboundsを取得して、<br /> モデルや画像の大きさと中心の座標を得ることができます。</p> <pre class="code lang-cs" data-lang="cs" data-unlink>Bounds bounds = GetComponentInChildren&lt;Renderer&gt;().bounds Vector3 center = bounds.center; </pre><p><br /> 今回は3D<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%BC%A5%EB%A5%C0">ゼルダ</a>風のZ注目モードを作ろうとしていたのですが<br /> ターゲットのpivotの位置によってはマーカーが変なところに表示されてしまいました。<br /> (キャラの場合は足元とか...)<br /> ので、中央に表示するためには中央の位置を知る必要があったのでした。</p> kasatanet sceneUnloadedが呼ばれちゃう現象の調査 hatenablog://entry/8599973812322972343 2017-12-02T14:14:08+09:00 2017-12-05T17:37:03+09:00 # 昨日からの調査の追記です。うーむ、どうやらEditorOnlyModeは関係ないみたいだ。 また、起動時のみに発生するというわけでもなさそう。 # 発生はエディタ上のみっぽい。 # エディタでプレイモード起動中にインスペクタの表示を切り替えると つまりOdinを適用した別のオブジェクトを選択すると発生するみたい。今のプロジェクトではシーン切替時にオブジェクトプールの掃除を 割り込ませているのでちょっと厄介。。。根本的な解決になってないけどこれで対処しておこう。 5.6のときは発生しなかったから2017のみの現象なのかな。 void OnSceneUnloaded(Scene scene) … <p># 昨日からの調査の追記です。</p><p>うーむ、どうやらEditorOnlyModeは関係ないみたいだ。<br /> また、起動時のみに発生するというわけでもなさそう。<br /> #<br /> 発生はエディタ上のみっぽい。<br /> #<br /> エディタでプレイモード起動中にインスペクタの表示を切り替えると<br /> つまりOdinを適用した別のオブジェクトを選択すると発生するみたい。</p><p>今のプロジェクトではシーン切替時にオブジェクトプールの掃除を<br /> 割り込ませているのでちょっと厄介。。。</p><p>根本的な解決になってないけどこれで対処しておこう。<br /> 5.6のときは発生しなかったから2017のみの現象なのかな。</p> <pre class="code lang-cs" data-lang="cs" data-unlink><span class="synType">void</span> OnSceneUnloaded(Scene scene) { <span class="synComment">//現在のシーンでなければスキップ</span> <span class="synStatement">if</span> (scene.name != SceneManager.GetActiveScene().name) { <span class="synStatement">return</span>; } CleanPool(); Debug.Log(<span class="synConstant">&quot;BulletMgr.cs:バレットのプールをクリアしました。&quot;</span>); } </pre><p><br /> # 更に追記<br /> どうもこれが原因の一つみたい。</p><p>[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]</p><p>このattributeをつけたメソッドはゲーム起動時、Awake()の前に呼ばれます。<br /> また、シーン上に配置されていなくても、プロジェクト内にあれば呼ばれます。</p><p>この勝手に読んでくれる機能がなかなかに便利で、<br /> ボクはこれを使ってマネージャを自動生成したりデータベースを読んだりしてるのですが<br /> どうもそのタイミングでsceneUnloadedにイベント登録しているのがまずかったみたいです。</p><p>このマネージャはシングルトンになっているし、<br /> 素直に<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A4%A5%F3%A5%B9%A5%BF%A5%F3%A5%B9">インスタンス</a>取得ルーチン内で生成させよう。。。</p> kasatanet ちょっと雑記 hatenablog://entry/8599973812322865340 2017-12-02T02:16:29+09:00 2017-12-02T04:24:11+09:00 うっかりプロジェクトを壊してしまったのは痛手だったけど 色々と構造の見直しとブラッシュアップができたので結果オーライとしておこう。UI系統が設定ファイルから一括で色指定ができるようになりました。 色以外もフォントなども設定できます。 これでプレファブを1個ずつ調整する作業から逃れることができる! スポイトで色を拾ってこなくても済む!もっとも、ウィンドウの画像を変える場合は 見ながら位置とかの微調整が必要なんだけどね。 ユニット用のクラスが分割されてたのも統合しました。 ファイル数が減ってスッキリはしたけど .csの中身は当然ながら行数が増えている。。。 ステータスからスキル、ドロップアイテム、… <p>うっかりプロジェクトを壊してしまったのは痛手だったけど<br /> 色々と構造の見直しとブラッシュアップができたので結果オーライとしておこう。</p><p>UI系統が設定ファイルから一括で色指定ができるようになりました。<br /> 色以外もフォントなども設定できます。<br /> これでプレファブを1個ずつ調整する作業から逃れることができる!<br /> スポイトで色を拾ってこなくても済む!</p><p>もっとも、ウィンドウの画像を変える場合は<br /> 見ながら位置とかの微調整が必要なんだけどね。</p><br /> <p>ユニット用のクラスが分割されてたのも統合しました。<br /> ファイル数が減ってスッキリはしたけど<br /> .csの中身は当然ながら行数が増えている。。。<br /> ステータスからスキル、ドロップアイテム、<br /> 各種モーション値の設定から、視界、接触判定とその補正まで入れて<br /> 大体1400 行(多分2、3割はコメントとかsummryとかattributeとか)。<br /> ちょっと大きいかもね。。。</p><p>かと言って<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B3%A5%F3%A5%DD%A1%BC%A5%CD%A5%F3%A5%C8">コンポーネント</a>で分割してると<br /> 結局、本体になるやつを参照しに行かないといけないし、<br /> ファイル数は増えるし、個々にアタッチする手間は増えるし、<br /> どっちがいいのか微妙なところ。</p><p>ドロップアイテムとかはデータベース作ったほうがいいとは思ってます。</p><p>以上。<br /> 今日はただの日記でした。</p><br /> <p># 追記:<br /> 支援イラストの1枚や2枚は送らせてもらおうかな</p><br /> <p># 追記メモ<br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%C4%A5%A4%A5%C3%A5%BF%A1%BC">ツイッター</a>に書いたけど忘れそうなのでこにもメモ。</p><p>OdinのEditorOnlyModeをEnableにしておくと<br /> プレイ起動時にsceneUnLoadedが呼ばれることがある。<br /> おそらくEditor上だけの現象。<br /> また必ず実行されるわけではない。体感30%くらい。<br /> 何故か2回呼ばれている。<br /> 詳しいことは調査中。</p> kasatanet 自分用Unityメモ:アニメーションの終了を待つ hatenablog://entry/8599973812321381360 2017-11-26T22:45:55+09:00 2017-11-27T14:02:25+09:00 AnimatorStateInfo を使用することで、 再生中のアニメーションの情報を得ることができます。 AnimatorStateInfo.Length でアニメーションの再生時間がわかるので それを使ってモーション待ちが出来たりします。 //プロパティで読み取り専用にするよ private bool m_isMotion; public bool IsMotion{ get{ return m_isMotion; } } //モーション開始と一緒に呼ぶコルーチン IEnumerator AttackMotionCoroutine() { //ホントはAnimatorは先に取得しておいた方… <p>AnimatorStateInfo を使用することで、<br /> 再生中のアニメーションの情報を得ることができます。<br /> AnimatorStateInfo.Length でアニメーションの再生時間がわかるので<br /> それを使ってモーション待ちが出来たりします。</p> <pre class="code lang-cs" data-lang="cs" data-unlink><span class="synComment">//プロパティで読み取り専用にするよ</span> <span class="synType">private</span> <span class="synType">bool</span> m_isMotion; <span class="synType">public</span> <span class="synType">bool</span> IsMotion{ <span class="synStatement">get</span>{ <span class="synStatement">return</span> m_isMotion; } } <span class="synComment">//モーション開始と一緒に呼ぶコルーチン</span> IEnumerator AttackMotionCoroutine() { <span class="synComment">//ホントはAnimatorは先に取得しておいた方が良いです</span> Animator myAnimator = GetComponent&lt;Animator&gt;(); m_isMotion = <span class="synConstant">true</span>; <span class="synComment">//遷移を待つ</span> <span class="synType">float</span> transitionTime = <span class="synConstant">0</span>; <span class="synStatement">while</span> (myAnimator.IsInTransition(<span class="synConstant">0</span>)) { transitionTime += Time.deltaTime; <span class="synStatement">yield</span> <span class="synStatement">return</span> <span class="synConstant">0</span>; } <span class="synComment">//念のためアニメーションのステートをUpdate</span> <span class="synComment">//無いと遷移前ステートを取得しちゃうことがあります。。。</span> myAnimator.Update(<span class="synConstant">0</span>); <span class="synComment">//モーション時間分だけ待つ</span> AnimatorStateInfo stateInfo = myAnimator.GetCurrentAnimatorStateInfo(<span class="synConstant">0</span>); <span class="synStatement">yield</span> <span class="synStatement">return</span> <span class="synStatement">new</span> WaitForSeconds(stateInfo.length - transitionTime); m_isMotion = <span class="synConstant">false</span>; } </pre><p>ただ、割と横着な方法なので<br /> モーションごとにインターバル設定した方が<br /> 確実性はあると思います。。。</p> kasatanet Unity1week:Space編 hatenablog://entry/8599973812319336968 2017-11-20T02:23:33+09:00 2017-11-23T23:33:17+09:00 Unityroomさんの1週間ゲームジャム、通称Unity1weekに参加しました。 無料ゲーム投稿サイト unityroom - Unityのゲームをアップロードして公開しよう 参加は今回で3回目となります。 提出できなかった時も作ってはいたのですが、 間に合わないことが多かったのですよ、よよよ。。。さて、今回のお題は……「space」! この単語からは宇宙、空間、スキマ、あるいはspaceキー、バナナなんかが連想できました。 ......我ながら発想が貧困。しかしまあ、奇をてらってまた間に合わないというのもよろしくないので ここはシンプルに宇宙ネタ、そしてシューティングで行くことにしました… <p>Unityroomさんの1週間ゲームジャム、通称Unity1weekに参加しました。<br /> <a href="https://unityroom.com/">&#x7121;&#x6599;&#x30B2;&#x30FC;&#x30E0;&#x6295;&#x7A3F;&#x30B5;&#x30A4;&#x30C8; unityroom - Unity&#x306E;&#x30B2;&#x30FC;&#x30E0;&#x3092;&#x30A2;&#x30C3;&#x30D7;&#x30ED;&#x30FC;&#x30C9;&#x3057;&#x3066;&#x516C;&#x958B;&#x3057;&#x3088;&#x3046;</a><br /> 参加は今回で3回目となります。<br /> 提出できなかった時も作ってはいたのですが、<br /> 間に合わないことが多かったのですよ、よよよ。。。</p><p>さて、今回のお題は……「space」!<br /> この単語からは宇宙、空間、スキマ、あるいはspaceキー、<strike>バナナ</strike>なんかが連想できました。<br /> ......我ながら発想が貧困。</p><p>しかしまあ、奇をてらってまた間に合わないというのもよろしくないので<br /> ここはシンプルに宇宙ネタ、そしてシューティングで行くことにしました。</p><p>ただ、シューティングは実は前回も作っています。<br /> しかも現在まさに制作中のシューティングもあったりします。<br /> なので今回はちょっと趣向を変えて、<br /> 「宇宙」からの連想で惑星の引力を利用するものにしてみました。<br /> そんなわけで作られたのが今回の「Swing By Me」です。<br /> URLはこちら:<a href="https://unityroom.com/games/swingbyme">https://unityroom.com/games/swingbyme</a><br /> 地球の引力で月を振り回すアクションシューティング。<br /> よかったら遊んでくださいな。</p><br /> <p>制作するにあたって、<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B1%A5%D7%A5%E9%A1%BC%A4%CE%CB%A1%C2%A7">ケプラーの法則</a>を調べたりしてたのですが、<br /> 月が吹っ飛んだり地球(自機)が勝手に引っ張られたりでゲームにならないので <br /> 簡単なウソ引力で行くことにしました。コードは以下のような感じです。</p> <pre class="code lang-cs" data-lang="cs" data-unlink> <span class="synComment">//引っ張る方</span> <span class="synType">public</span> <span class="synType">class</span> GravityAttractor : MonoBehaviour { <span class="synType">public</span> <span class="synType">float</span> gravity = -<span class="synConstant">10</span>; <span class="synType">public</span> <span class="synType">void</span> Attract(Transform moon) { Vector3 gravityUp = (moon.position - transform.position).normalized; moon.GetComponent&lt;Rigidbody&gt;().AddForce(gravityUp * gravity); } } </pre><p>地球から月への方角ベクトルを求めてその方向と逆に力を加えています。<br /> 地球が動くとうまいこと周囲を回転してくれます。Unityすごい。<br /> このメソッドを月の側のUpdateで呼び出します。</p> <pre class="code lang-cs" data-lang="cs" data-unlink>[RequireComponent (<span class="synStatement">typeof</span> (Rigidbody))] [RequireComponent(<span class="synStatement">typeof</span>(LineRenderer))] <span class="synType">public</span> <span class="synType">class</span> Moon : MonoBehaviour { <span class="synType">public</span> GravityAttractor attractor; <span class="synType">private</span> Transform myTransform; <span class="synType">private</span> Rigidbody myRigidbody; <span class="synType">private</span> LineRenderer myLine; [Range(-<span class="synConstant">360</span>, <span class="synConstant">360</span>)] <span class="synType">public</span> <span class="synType">float</span> rotateSpeed = <span class="synConstant">30</span>; [Range(<span class="synConstant">0</span>, <span class="synConstant">5f</span>)] <span class="synType">public</span> <span class="synType">float</span> minDistance = <span class="synConstant">0</span>; [Range(<span class="synConstant">0</span>, <span class="synConstant">20f</span>)] <span class="synType">public</span> <span class="synType">float</span> maxDistance = <span class="synConstant">5.0f</span>; <span class="synType">public</span> <span class="synType">bool</span> isLookAtAttractor = <span class="synConstant">true</span>; <span class="synType">public</span> <span class="synType">bool</span> isLine = <span class="synConstant">true</span>; <span class="synType">void</span> Start () { myTransform = transform; myRigidbody = GetComponent&lt;Rigidbody&gt;(); myRigidbody.useGravity = <span class="synConstant">false</span>; myLine = GetComponent&lt;LineRenderer&gt;(); } <span class="synType">void</span> Update() { transform.RotateAround(attractor.transform.position, Vector3.up, rotateSpeed * Time.deltaTime); <span class="synType">float</span> distance = Vector3.Distance(attractor.transform.position, myTransform.position); <span class="synStatement">if</span> (distance &lt; minDistance) { Vector3 angle = (myTransform.position - attractor.transform.position).normalized; myRigidbody.MovePosition(attractor.transform.position + angle * minDistance); } <span class="synStatement">else</span> <span class="synStatement">if</span> (distance &gt; maxDistance) { Vector3 angle = (myTransform.position - attractor.transform.position).normalized; myRigidbody.MovePosition(attractor.transform.position + angle * maxDistance); } <span class="synStatement">if</span> (isLine) { <span class="synStatement">if</span> (attractor.gameObject.activeInHierarchy) { myLine.positionCount = <span class="synConstant">2</span>; myLine.SetPosition(<span class="synConstant">0</span>, myTransform.position); myLine.SetPosition(<span class="synConstant">1</span>, attractor.transform.position); } <span class="synStatement">else</span> { myLine.positionCount = <span class="synConstant">0</span>; } } <span class="synStatement">if</span> (isLookAtAttractor) { Quaternion targetRotation = Quaternion.LookRotation(transform.position - attractor.transform.position); transform.rotation = <span class="synStatement">new</span> Quaternion(<span class="synConstant">0</span>, targetRotation.y, <span class="synConstant">0</span>, targetRotation.w); } } <span class="synType">void</span> FixedUpdate () { <span class="synStatement">if</span> (attractor) { attractor.Attract(myTransform); } } } </pre><p>決定稿では0になっているのですが<br /> 最近距離(minDistance)を設定しておくと、<br /> その距離だけ地球を迂回するように動くようになります。</p><p>rotateSpeedも最終的に0にしておくことにしました。<br /> ので、月はプレイヤーの操作による地球の位置の変動によってのみ<br /> 動かせることになります。</p><p>ここは上手いこと重力感というか、<br /> 「振り回している」手ごたえを感じてもらえるように<br /> 操作<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AF%A5%EA%A5%D7%A5%C8">スクリプト</a>の方で微調整をしております。</p><p>その他、当たり判定等は普通のシューティングの作り方ですが<br /> 何分、オブジェクトが大量に出てくるので弾からパーティクル、<br /> 敵キャラまですべてプーリングしつつ、<br /> マネージャから座標を監視しています(これはループさせるため)<br /> あとアイテムも……</p><p>そう、ホントはコインが出てきて集めると月のほかにも<br /> 太陽系の兄弟たちを振り回せる予定だったのですが<br /> 残念ながら時間切れとなりました。1週間って意外と短い。</p><p>敵を倒したときの効果音やエフェクトのタイミングに<br /> こだわりたかったのでそこに時間を使ってしまいました。<br /> でも爽快感があるという評価をいただいたので<br /> 時間を割いて調整したことは間違ってなかったと思います。</p><br /> <p>反省点としては難易度の調整ですね。<br /> 操作感が独特になるので、初めて触れるプレイヤーには難しい、ハズ。<br /> なので、そこは慎重にならなくてはいけなかったのですが……<br /> もとい、慎重になっていたつもりだったのです、が。<br /> やっぱり難易度が高いという感想をいくつか頂きました。</p><p>一応、スコアに応じて徐々に強い敵が出るようになっているのですが<br /> そんな調整だけでは小手先の小細工もいいとこ......</p><p>反芻になりますが、やはり操作に慣れが必要であることが大きかった。<br /> 大量の作品が投稿されている中で、1作品の操作練習に時間を割いてもらうのは<br /> やっぱり難しいですね。 うーむ、考えが甘かったなぁ。</p><p>人気のある作品を見るに操作がシンプルで、瞬時に理解できるものが多いですしね。<br /> 次回はその辺、もう少し考えようと思います。<br /> ほかにも細かい反省点は尽きないですが、<br /> 久しぶりに完成品を提出できたことは間違いなく「よかった」と思えます。</p><br /> <p>さて、今回のプロジェクトにはストアのアセットを<br /> 結構たくさん使用させて頂いているので<br /> その紹介をしたいと思います。</p><br /> <p>■PlayMaker<br /> 定番のステートマシンアセットです。<br /> ゲームのフローの制御から敵キャラのAIまで色々使えます。<br /> 今回は専ら前者で全体のフローに使用しています。<br /> ボクの場合、主に使うのはCallMethodアクションで、<br /> ゲームごとのマネージャに記述したステート処理を呼び出すようにしています。<br /> 拡張も比較的カンタンなので汎用アクションもほとんど自作したものを使ってます。<br /> <iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/368/widget?aid=1011l3q69" style="width:202px; height:260px; border:0px;"></iframe></p><p>公式のドキュメントが充実していて、<br /> エディタも日本語化されているのがありがたいです。<br /> FSM入門はこのPlayMakerか、Arbor2がおススメ。(個人の感想です)<br /> 今セールやってるみたいです。</p><br /> <p>■Odin - Inspector and Serializer<br /> お気に入りのアセット。<br /> これはインスペクタを拡張するためのアセットです。<br /> Attributeをちょっと記述するだけでこんな感じに出来ます。<br /> <span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/k/kasatanet/20171120/20171120171623.png" alt="f:id:kasatanet:20171120171623p:plain:w240" title="f:id:kasatanet:20171120171623p:plain:w240" class="hatena-fotolife" style="width:240px" itemprop="image"></span> <span itemscope itemtype="http://schema.org/Photograph"><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/k/kasatanet/20171120/20171120173040.png" alt="f:id:kasatanet:20171120173040p:plain:w240" title="f:id:kasatanet:20171120173040p:plain:w240" class="hatena-fotolife" style="width:240px" itemprop="image"></span><br /> グループ化したりタブをつけたり折りたたみ(FoldOut)したり<br /> プロパティを表示したり、特定boolがtrueの時だけ表示したり<br /> dictionaryを<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B7%A5%EA%A5%A2%A5%E9%A5%A4%A5%BA">シリアライズ</a>できたりします。<br /> 機能性はもちろんなのですが単純に触るのが面白い。<br /> 拡張沼にハマるのもわかる気がする....。<br /> これについてはもしかしたら、解説を別に書くかもしれません。</p><p>あっ、これも今セールやってるみたいですよ! (2017/11/20)<br /> <iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/89041/widget?aid=1011l3q69" style="width:202px; height:260px; border:0px;"></iframe></p><br /> <p>■Curved World<br /> お気に入りの曲面シェーダ。<br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%DE%A5%EA%A5%AA%A5%AE%A5%E3%A5%E9%A5%AF%A5%B7%A1%BC">マリオギャラクシー</a>のような雰囲気や<br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A4%C9%A4%A6%A4%D6%A4%C4%A4%CE%BF%B9">どうぶつの森</a>のようなドラムロール式の演出が出来ます。<br /> (アセットの説明文でも例に挙げられていました)<br /> あくまでシェーダなので曲がっているのは見た目だけです。<br /> 物理的な座標はそのままなので物理挙動の計算式を変える必要もありません。<br /> マテリアルに張り付けるだけでいつものマップがちょっと新鮮に。<br /> あとモバイルでもあんまり負荷がかからない感じです。</p><p>注意点としては、<br /> あくまで平面を曲げて見せているだけなので<br /> これだけで完全な球面(ループ構造)にはならない、ということです。<br /> 今回のゲームではマップ(と敵)の座標をループさせることで球面を演出しています。<br /> <iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/26165/widget?aid=1011l3q69" style="width:202px; height:260px; border:0px;"></iframe></p><br /> <p>■DOTween (HOTween v2)<br /> 定番のTweenです。<br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/twitter">twitter</a>でこれは良い、という話を見かけて今回初めて使わせてもらったのですが、<br /> ホントにこれを無料で共有してもらっていいのかしらというくらい色々できます。<br /> 今回のゲームで使っているのはUI....ではなくて弾の軌道の制御です。<br /> 上に張ったシューターの<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B3%A5%F3%A5%DD%A1%BC%A5%CD%A5%F3%A5%C8">コンポーネント</a>で機能を利用していて、<br /> 先に設定したパスに沿って飛ばせるようになっています。<br /> とはいえ、今回は難易度調整の関係で歪曲弾とか撃つ敵はいないんですけどね....。<br /> <iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/27676/widget?aid=1011l3q69" style="width:202px; height:260px; border:0px;"></iframe></p><br /> <p>■Clean & Minimalist <a class="keyword" href="http://d.hatena.ne.jp/keyword/GUI">GUI</a> Pack<br /> シンプル、フラットで扱いやすいUIテクスチャのセット。<br /> このアセット作者さんがシリーズで出しているような素材感のあるUIもいいですが、<br /> こういうシンプルなのも素敵です。<br /> インスペクタから色を変えるだけで雰囲気を変えられるのも利点ですね。<br /> <iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/75123/widget?aid=1011l3q69" style="width:202px; height:260px; border:0px;"></iframe></p><br /> <p>■Dynamic Starry Sky<br /> 愛用させてもらっている<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%B9%A5%AB%A5%A4%A5%C9%A1%BC%A5%E0">スカイドーム</a>用のシェーダです。<br /> 星や月の表示位置、グラデーションの開始位置をカスタマイズできます。<br /> もちろん夜空以外を作成することも可能です。<br /> <iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/91853/widget?aid=1011l3q69" style="width:202px; height:260px; border:0px;"></iframe></p><br /> <p>■Hyperbit Arsenal<br /> 今回のジャムでの使用者も多かった気がするパーティクル集。<br /> 80年代のようなレトロ感を醸し出しつつも新しい、ステ<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AD%A5%A8%A5%D5">キエフ</a>ェクト。<br /> 効果音まで付属しているのがとってもありがたいです。<br /> 制作中のシューティングでもお世話になっております。<br /> <iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/63274/widget?aid=1011l3q69" style="width:202px; height:260px; border:0px;"></iframe></p><br /> <p>■Game Music Pack - SUITE<br /> 高品質、かつあらゆるジャンルが取り揃えられた楽曲セット。<br /> カジュアル系からEDM、ファンタジー<a class="keyword" href="http://d.hatena.ne.jp/keyword/RPG">RPG</a>ぽいのからSFシューティング風まで。<br /> 毎回お世話になっております。<br /> <iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/20997/widget?aid=1011l3q69" style="width:202px; height:260px; border:0px;"></iframe></p><br /> <p>■BGM Collection Volume 1 "Colorful"<br /> 今回ゲームシーンのメイン曲として使用させていただきました。<br /> 扱いやすい短めのループ曲の詰め合わせ。ジングルも入っています。<br /> 作曲者さんごとに雰囲気というか、傾向があるのが楽しいです。<br /> Volume 1 とあるので 2 にも期待しております。<br /> <iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/92662/widget?aid=1011l3q69" style="width:202px; height:260px; border:0px;"></iframe></p><br /> <p>■Deportivo<br /> 日本のパブリッシャーさんが提供してくれているシリーズ。<br /> ポリ数、頂点数ともに抑えめでモバイルでも使いやすいモデルです。<br /> 制作中の<a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%A2%A5%AF%A5%B7%A5%E7%A5%F3RPG">アクションRPG</a>でも使用させてもらっています。<br /> <iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/20861/widget?aid=1011l3q69" style="width:202px; height:260px; border:0px;"></iframe><br /> <iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/45263/widget?aid=1011l3q69" style="width:202px; height:260px; border:0px;"></iframe></p><br /> <p>■Low Poly Ultimate Pack<br /> 様々な屋外場面を演出できるローポリモデルの詰め合わせ。<br /> 平原、雪原、森、砂漠、海岸、孤島、西部の荒野まで。<br /> 今回は汽車のモデルを<a class="keyword" href="http://d.hatena.ne.jp/keyword/%B6%E4%B2%CF%C5%B4%C6%BB">銀河鉄道</a>として使わせていただきました。<br /> 1000点以上で出現します。....キミは見ることが出来るか!?<br /> <iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/54733/widget?aid=1011l3q69" style="width:202px; height:260px; border:0px;"></iframe></p><br /> <p>■Planet Pack<br /> デザインが好みだったので、今回のジャム用に買ったアセット。<br /> <a class="keyword" href="http://d.hatena.ne.jp/keyword/%A5%AB%A1%BC%A5%C8%A5%A5%A1%BC%A5%F3">カートゥーン</a>な惑星モデルの詰め合わせです。<br /> 先にも書いたけど、ホントは月以外も振り回せる予定だったのさ。<br /> 今後の使用予定ももちろんあります。<br /> <iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/72089/widget?aid=1011l3q69" style="width:202px; height:260px; border:0px;"></iframe></p><br /> <p>■Space Theme Items and Props Starter Pack<br /> 隕石やロケット、砲台、UFO、宇宙飛行士などのモデルのセットです。<br /> SF風の看板やゲート、信号機なども含まれています。<br /> これだけでシューティング出来そうな勢い。低ポリでモバイルでも安心。<br /> 今回はほとんどの敵キャラをこの中から使用させていただきました。<br /> <iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/93384/widget?aid=1011l3q69" style="width:202px; height:260px; border:0px;"></iframe></p><br /> <p>■Planets with Space Background in <a class="keyword" href="http://d.hatena.ne.jp/keyword/Flat">Flat</a> Style<br /> 惑星の2Dテクスチャの詰め合わせ。フリーアセットです。<br /> 今回は各種ボタンとして使用させてもらいました。<br /> <iframe src="https://api.assetstore.unity3d.com/affiliate/embed/package/95983/widget?aid=1011l3q69" style="width:202px; height:260px; border:0px;"></iframe></p><br /> <p>こうしてリストアップしてみると、かなり使ってますね。<br /> なるべく汎用的な、色々なプロジェクトで使えそうなのを<br /> 選んで買っているつもりなのですが、<br /> セールがあると気になってたのを衝動買いしてしまう癖が……。</p><p>そういえば、また今日からセールが始まってるんだっけ……。</p> kasatanet