原カバンは鞄のお店ではありません。

Unityを使ったゲーム制作のあれこれを綴っていきます。

【雑記】Unity1weekがUnity2weekになってしまった話

新年

年末年始は部屋から出ずに2077年のナイトシティで年を越した皆さんこんにちは。外付けSSDで拡張したPS4で遊んでいますが巷で報告されているほどエラー落ちはしませんね。激しい銃撃戦では落ちやすいみたいですが、私はチキンなステルスプレイ中心なので特に問題ありません。

 

Unity1week

年末から年始かけてUnityroomにてUnity1weekが開催されていました。

 unityroom.com

これは文字通り「Unity」を使って「1week(一週間)」で毎回決まったお題に沿ったゲームを作り、互いに評価してもらう、というイベントです。

現在(1/5)は未だ評価期間中で遅延での投稿も可能なので作品が出揃ってはいませんが、今回も440以上の作品が投稿されているようですね。

私も今回参加してアクションゲームを投稿しています。難易度低めとなっているので気軽に楽しめると思います。

 

unityroom.com

ただ、今回の作品については当初の想定以上に制作に時間が掛かり、Unity1weekならぬUnity2weekになってしまいました。

結果として年末年始の休暇は全てこれに取られた形になってしまったのですが、なぜこうなったのか反省も込めて振り返ってみたいと思います。

 

Unity1week開始前(~12/20)

去年からUnity1weekには度々参加しているのですが、毎回私はお題からゲームを考案するのでなく、その時作りたいと思ったゲームをお題に合わせる、という形で作業を進めています。じゃないとモチベーションが持たないので。

 

Unity1week開始前の時期は講談社のゲームクリエイターラボに落ちた直後だったこともあり、二期目の募集があった時に向けたプロトタイプの作成に取り組んでいた時期でした。

この時考えていたプロトタイプはボクセルアートっぽい箱庭を舞台としたアクションゲームです。

 

「ボクセルアート」とはファミコン時代のドット絵を立体化させたような感じで、立方体を組み合わせてつくる3DCGの事を指します。

Twitter等のSNSをチェックすると度々ボクセルアートの作品が投稿されているのを目にするし、インディゲーム界隈ではボクセルのゲームはソコソコ受けが良いみたい。

なのでボクセルアートのような一画面内に収まる狭い範囲の箱庭の中でSTGやACT、RPG等が再現ができればインパクトのあるものになりそう、そう考えて試しに簡単なランゲームを作っていました。

 

f:id:Karvan:20210105205820g:plain

自分の中では「良い感じ」にできたプロトタイプ。

 

お題発表、正式な開発期間(12/21~12/27)

今回のお題は「あける」だと発表がありました。開ける、明ける、空ける・・・幅広い意味でとらえる事ができる良いお題だと思います。

私は事前に作っていたプロトタイプがあるのでそれをお題に合わせて改変すれば期間内にできるな、と甘い考えを持ったままま、とりあえず「扉を開ける」方向でゲーム作成を進めることにしました。

 

一日目:ステージの端の表示がスムーズでないため、奇麗に見えるよう試行錯誤する(上のプロトタイプではブロックを置いて誤魔化しています)

二日目:ステージを横スクロールだけでなく上下にも動かしてみたくなり、実装に取り掛かる

三日目:ステージの上下に合わせて、周囲に下から上へ流れるCUBEが表示されるように変更

四日目:ステージの上下に合わせて、キャラクターのアニメ動作を設定する。タイミング合わせに苦労する。

 

・・・と、四日経過してステージが上下してキャラクターが飛び上がる演出しか完成しませんでした。なんでだろ?

でもまぁ、あとは障害物とか敵を表示できればゲームとしては成り立つし、きっと期限内に完成する。とその時は思っていました。

 

五日目:敵キャラが登場するようにオブジェクトプールとか色々作る。合わせてアニメ動作と当たり判定をつける。

六日目:扉の出現アニメーションを作成する。扉の移動と床のスクロール速度が合わずアレコレ試行する。

七日目(最終日):この段階でボス戦の実装に取り掛かる。絶対間に合わないのでTwitterに進捗報告を上げた後、サイバーパンクに現実逃避する。

 

この時の進捗具合はこんな感じ。ボス戦以外はそれとなく完成しているので遅刻しても2,3日中、もしくは年内には完成する想定でいました。

f:id:Karvan:20210105210147g:plain

 

遅刻期間(2020/12/28~2021/01/03)

12/28:画面はモノトーンベースの方がオシャレかも、などとトチ狂ってデザインを変更する

f:id:Karvan:20210105210019g:plain

 

12/29:急にボスを使徒ラミエルのように変形させたくなり、その実装で丸一日潰れる

f:id:Karvan:20210105210416g:plain

 

第一形態で心が折れたので二形態目は手を抜く。そして疲れを癒すためにサイバーパンクに現実逃避する。

f:id:Karvan:20210105210740g:plain

 

12/30:ボスにダメージエフェクトをつける。年内に完成しなくても良いんじゃいかと思えてきたので、サイバーパンクのACT1のサブクエを全てクリアする。

12/31:そういえば自機や敵のHPとかゲーム開始前後のUI作ってないなぁ、と思いながら、サイバーパンクのACT1をクリアする。

01/01:明日は頑張る、元旦ぐらいはいいじゃん、という気分でサイバーパンクのクエストを次々とこなしていく。

01/02:いい加減サイバーパンクが一区切りついたので、ゲームの開始画面とかゲームオーバーの演出とか色々作る

01/03:一通りが完成したのでビルドしてunityroomに投稿する

 

途中無駄に過ごした数日がありましたがとりあえず完成してよかったです。

評価期間中なので最終的な評価は分かりませんが自分としては満足する物が出来たと思っています。

まぁ、開発期間を一週間も延長すればそれなりの物は出来るよねぇ。とか嫌味が聞こえてきそうなので、今後は期限内に作成できるよう誘惑に負けない強い気持ちを持ちたいです。

【雑記】一年の終わりなので今年の活動を振り返る

年納

静音キーボードに買い替えたのに何故かAキーだけカタカタ音がする皆さんこんにちは。今週はUnity1Week期間中という事で、私も微力ながら参加しようと新規にプロジェクトを立ち上げたはいいものの、デフォルト画面のまま中々構想がまとまりません、どうしよう。

こんな時はTwitterに流れてくる他の参加者の進捗報告でも参考にしようかと思ったのですが、最近のTwitterトレンドは暇を持て余したジジババ政治豚のハッシュタグで溢れているのでTwitterを開く気にもなれません、どうしてくれよう。

とりあえずUnity1Weekの今回のお題は「あける」ということなので、なんとか期間内にお題に沿った作品を仕上げたいと思います。

 

unityroom.com

 

振り返り

今年も早いもので残り二週間を切り、忘年会も納会もないまま今週で仕事納めとなります。

振り返ってみると今年はStab of Bee Projectとして一本もゲームをリリースできず、BitSummitやデジゲー博などのイベントにも出展できず仕舞いに終わってしまいました。

Unityroomの方にイベントを利用して幾つか試作的な作品を上げたりはしたのですが、少なくとも年に一本ぐらいは正式な物をリリースしたいし、何かしらのインディゲームのイベントにも出展してみたい。

どちらかといえば停滞した一年だったかなぁ、と思って言います。まぁ今年の更新はこれで最後だと思うので、今年一年の活動をざっくりと纏めてみました。

 

1月~3月

去年から引き続き2.5DのSTG製作を行うが全然モチベーションが上がらず作業が進まかった、ってか面白い作品になりそうな気がしなかった。

自分でプレイして面白いと思えないのに他人が面白いと思うわけはないので作品の方向性を変えるか、作り直すか、中断するか大いに悩んだ時期でした。結果中断。

 

タイトル画面だけは満足する物ができたのですがね、口惜しいなぁ。。。

f:id:Karvan:20201222211722g:plain

 

気晴らしにUnity1WeekにSTGのボス戦をイメージした作品で参加。なぜか絵作りと雰囲気は評価してもらえた。ありがとうございます。

f:id:Karvan:20201222213450g:plain

unityroom.com

 

4月~6月

STG製作は完全になる気が無くなり、アセットストアでフレームワークとなるアセットを見つけたのを契機にアドベンチャーゲームの製作に移行する。

これが現在制作中の脱出ゲーム

www.youtube.com

 

GWにroom6のゲームジャムに参加。物理演算を使ったゲームに初めてチャレンジする。
個人的にはそこそこに面白いと思ったのですが、ゲームジャムの結果としては箸にも棒にも掛からぬ、といった具合。むぅ~・・・

f:id:Karvan:20201222213820p:plain

unityroom.com

 

7月~9月

フレームワークを使っているだけあって脱出ゲームの製作が順調に進む。キャラクターの移動とかカメラ操作とか細々とした機能を自作しなくてよいのでゲーム本編にリソースを割けるし集中することができる。

とは言え、アドベンチャーゲームなのにざっくりしたストーリーしか構想しておらず行き当たりばったりに作っている感もあった。

 

最初のステージ分だけ完成したのでUnity1Weekにかこつけて出来たところまでをアップしてみるが中々厳しい結果を突き付けられる。ポイントとなる点が色々と説明不足なのかもしれない。

 

f:id:Karvan:20201222214103g:plain

unityroom.com

 

10月~12月

Voodooのランゲームコンテスト、講談社のゲームクリエイターラボに応募するもどちらも見事に落選。

ランゲームコンテストの方は製作が期間内ギリギリだったのと、応募には稼働率を調べるための処理・設定を組み込む必要があって右往左往、もうこりごり。

ゲームクリエイターラボには現在制作中の脱出ゲームとSTGの企画を提出して脱出ゲームの方は予備選考には通ったらしい。

 

f:id:Karvan:20201222213944g:plain

落選はしたがゲームクリエイターラボに応募するためストーリーの構想を練らなければならず、お陰で結末まできっちりとストーリーを整理することができた。

同じ作品の評価は8月のUnity1Weekでは散々だったので自信がなかったが、予備選考に通ったことでとりあえず方向性は間違ていないように思える。

 

最後に

製作中の脱出ゲームは来年の春にはリリースしたいと思っています。そしてこれを引提げてBitSummitみたいなイベントにも参加できればな、と思います。あくまで希望ですが

それでは、少し早いですが今年一年ありがとうございました。
良いお年を!

 

 

【Unity】今更気づくDOTweenのFromオプション

寒波到来

今年はそれほど寒く無いなぁと油断していたら週明けから急に寒くなって、慌てて冬用のズボンを取り出して履いてみたらお腹が苦しい皆さんこんにちは。

TVを見ると最近は何でもかんでもGotoのせいになっているので、これもGotoのせいに違いないし、外付けのSSDを購入してディスク容量を拡大してまで準備していたサイバーパンク2077なのに画面端が見切れて遊びづらいのもGotoのせいに違いありません。ちなみにPS4(ノーマル)です。

 

プロモーション

現在3Dの脱出ゲームを制作しており前回の記事の中でプロモーション動画を掲載しましたが悲しいほど誰も見てくれないので再度掲載します。

 

youtu.be

画面がホラーゲームっぽい雰囲気ですが、ホラー要素は殆どないパズルメインの脱出ゲームとなっています。よろしくお願いします。

 

今更気づく

毎度お世話になっているDOTweenですが、先日何気にDOTweenのドキュメントサイトを覗いていたらMoveやScale等のTweenのメソッドにFromオプションが使えることが記載されていました。

 

dotween.demigiant.com

前々から使えたのでしょうかね?

私は全く気付いていなかったのでFrom系の動作をさせたい場合にはiTweenの方を使って実装していました。

 

www.karvan1230.com

From系が使えると知っていたら、初めからDOTweenを使って実装していたのに口惜しい限りです。

なので今回はFrom系オプションのご紹介

 

From系の動作

このFrom系のオプションがどういうオプションなのか、というと例えばDOMoveの場合だと

   オブジェクトを指定した座標から現在の座標へ移動する

という動作が可能になります。

 

 説明だけではあまりピンとこないかもしれませんが、実際に通常のDOMoveとFromオプションをつけたDOMoveで動作を比較すると一目瞭然になります。

f:id:Karvan:20201215221932g:plain

 

Fromオプションは他のTweenでも設定可能で例えばDOScaleにFromオプションをつけると

f:id:Karvan:20201215222048g:plain

 こんな感じに動作します。

 

また、3DオブジェクトだけでなくUIに関するメソッドにもFromオプションは使えるので、例えばDOColorで使ってみると

f:id:Karvan:20201215222147g:plain

元の色に戻ってくる動作となります。

 

何が利点なのか

このようなFrom系動作はTween後に現在位置に戻ってくる動作なので、エディタ上で調整した位置からわざわざ動かさなくても済む、というのが最大の利点になります。

 

主にUI系のパネル、ボタンやラベルなどのオブジェクトに関してはエディタ上で位置を調整して、ゲーム実行後はその位置から動くことは余りありませんが、ボタンクリック等でちょっとしたアニメーションをつけたい場合にFromオプションをつけてアニメーションを作ることができます。

 

下の動画ではDOAnchorPosにFromオプションをつけて黒のパネルを動作させています。

f:id:Karvan:20201215222302g:plain

 

Fromオプションを使いこなすことが出来れば色々と幅広いアニメーションを作れるのではないでしょうか。

なお、DOPathやDOPunch、DOShake等のメソッドはFromオプションに対応していないので詳細はドキュメントサイトを確認してください。

【雑記】インディゲーム支援企画に落選した話

年末

12月に入り会社から「今年はコロナ禍を考慮して忘年会及び年末の納会を中止しますが、大掃除は例年通り行います」との通知にやる気を一気に失った皆さんこんにちは。いやいや、密を避けるのは大事ですが大掃除も密になりますよ。

 

ゲームクリエイターズラボ

10月ぐらいに講談社がインディゲームの支援企画を立ち上げて、ゲームの企画を一般から募集しており、私も船に乗り遅れじと2企画ほどそれに応募していたのですが、つい先日発表になった一次選考の結果を確認すると、残念ながら私の企画はどちらとも落選したようです。

 

daysneo.com

まぁ、1250件超という応募の中から一次選考通過はおよそ50作品(最終的には5作品)という中々に狭き門だったので、落選も当然の事かと思うのですが、悔しい事はやっぱり悔しい。

 

SNS上では同じ企画の落選者が「供養」と称して選外となってしまったゲーム企画をnoteやTwitter等で公開しているのが散見されます。

なので私もその流れに乗るというか、落選したという事実と大掃除に駆り出されるという事実でやる気を失い、これといった進捗もないので丁度いいというか、落選企画について振り返ってみたいと思います。

 

STG企画

一つ目はSTGの企画。

去年一年間作り続けて途中挫折するも、今年初めにこれをベースにしたゲームをunity1weekに投稿したら以外に好評だったため、再度練り直した企画です。

 

f:id:Karvan:20201208233332p:plain

 

 コンセプトとしてはボス戦のみの2.5DSTGといったところなんですが、現在のところ未だ練り直し段階でプロトタイプとして動かせるものがない為、企画書では上のようなゲームのコンセプトイメージしか提示できず。

また内容もざっくりとした概要の説明のみが語られ、このゲームの魅力や他STGゲームとの違いについて上手く説明できていなかったと思います。

 

案の定、一次選考前の予備選考の段階で選外となってしまいました。

自分の中でもイマイチ精査しきれていないので、今後本格的に製作に取り掛かるとしても更なるブラッシュアップが必要だと感じています。

 

脱出ゲーム企画

二つ目は現在製作中の脱出ゲームの企画

このブログでも度々進捗を載せているように、ある程度動かせるものがあるし、ストーリーの方もほぼ固まっているので、企画書としてもゲームコンセプトや魅力、狙いついて可能な限り説明できていたと思います。

 

f:id:Karvan:20201208233631p:plain

 

また、実際のゲーム動画をPV風にアレンジして提出していたので、企画書では足りなかった部分もアピールできたのではないでしょうか。

 

こちらはその甲斐あってか予備選考は通過していました。

予備選考では300作品超選ばれていますがこれでも全体の3割ぐらいなので、その中に入れたという事は製作を続けていく糧になります。どうもありがとうございました。

 

なお提出したPVはYoutubeで公開しています。

www.youtube.com

 

今後について

提出した企画はどちらも選外となってしまいましたが製作は続けていく予定です。

特に脱出ゲームの方は来年春にでも完成するとは思うのですが、今回の落選で残念に思うのはローカライズやパブリッシングの支援を受ける当てが無くなってしまったこと。

 

ローカライズに関してはGoogle先生に尋ねながら頑張ってはいるのですが、いかんせん英語力には自信がないのでこの翻訳で本当に伝わるのが不安がぬぐえません。

また、パブリッシングについてはスマホアプリをリリースした経験から、無名のインディゲームが広く世間に知れ渡るという事は、よほどの幸運に恵まれない限り不可能だという事が分かっているので、どこかしらにパブリッシングを依頼する必要性は感じています。

しかし、どこにどのように依頼すればよいのか分からず頭を抱えている段階。(まぁこれは実際に完成してから考えよう)

 

、、、と落選を嘆いてばかりですが、今回の講談社の企画は「一期メンバー募集」らしいので、もしかすると来年もまた同じ企画の募集が行われるかもしれません。

また、集英社の方でもインディゲームに関する企画が立ち上がるという情報もあるので、希望を捨てず、それまでにゲームを作りながら研鑽を積んでいきたいと思います。

 

【Unity】DOTweenのPuchについて

新入社員

今年はコロナ禍により仕事はテレワーク中心になり、大規模な会議や飲み会は開かれず仕舞いだったので、顔も名前も覚えていない新入社員がいつの間にか辞めていた皆さんこんにちは。急に退職のお知らせメールが廻ってきてビックリ、自己紹介された記憶もないです。来年はどうなるんでしょうか。

 

Puchメソッド

f:id:Karvan:20201201221543g:plain

上の動画はDOTweenのDOPunchPositionを使ってオブジェクトを左右に振動させたアニメーションです。

このようにPunchとは指定された値とその反対方向の値の間(100なら100~-100の間)を減衰しながら振動して元の値に戻る、というTweenを行うときに使用します。

 

主にオブジェクトのTransformに対してDOPunchPositionやDOPuchScale,DOPuchRotateを使うケースが多いかと思いますが、staticメソッドとしてPunchメソッドも用意されており、このメソッドではプロパティの値を指定した値の間で増減させることができます。

 

DOTween.Punch(getter, setter, Vector3 direction, float duration, int vibrato, float elasticity)

getter:プロパティの値をトゥイーンに返すデリゲート
setter:プロパティの値をトゥイーンに設定するデリゲート
direction:パンチの方向と強さ
duration:トゥイーンの持続時間
vibrato:パンチの振動数(省略可)
elasticity:後方にバウンドする時の開始位置を超える量。0を指定すると開始位置と減衰方向の間でのみ振動します。(省略可)

 

 下の場合はmyVectorの値が(100,100,100)~(-100,-100,-100)の間を2秒間減衰しながら振動します。

// Punch upwards a Vector3 called myVector in 2 second
DOTween.Punch(()=> myVector, 
       x=> myVector = x,
       new Vector3(100,100,100),
       2);

 実際に動作させてみると・・・

f:id:Karvan:20201201222221g:plain

 早くて分かりづらいですが、振動中のベクトル要素のX,Y,Zは全て同じ値となっています。


では、directionで指定するVectorの値を(100,200,300)とX,Y,Zで異なる値にした場合はどうでしょう。

f:id:Karvan:20201201222310g:plain

これも早くて分かりづらいのですが、振動中のベクトル要素のX,Y,Zはdirectionで指定した値の比と等しい値となっています。

 どうやらPunchメソッドではX,Y,Zそれぞれでランダムな値で振動する、という事はないようです。

 

ではなぜPuchメソッドについて調べたかというと、現在製作中のゲーム内で一人称視点のカメラが振動するような演出を加えたかったからです。

 

画面効果に使う

当初はカメラそのものをDOPunchPositionで動かそうと考えたのですが画面酔いを起こしそうになるのと、Tween中のカメラ操作の影響が面倒だったのでカメラを動かすのではなく、ポストエフェクトを使って色収差のズレを振動せることにしました。

 

色収差ついては以前ブログの記事にも書きましたが、画面の色成分(RBG)をそれぞれずらして表示するというエフェクトです。

www.karvan1230.com

上の記事では「Fast Chromatic Aberration」(注)というアセットを使用して色収差のエフェクトを実装しています。

このアセットではRGBそれぞれで色ずれの量を指定することができるので、Punchメソッドを使って振動させたVectorの値をRGBそれぞれに指定するようにしました。

 

f:id:Karvan:20201201222632g:plain

どうでしょう。画面そのものは動いてませんが色ずれの量が変動することで画面全体が揺れているように見えると思います。
今回はPunchメソッドの使用例の紹介でした。

 

(注)このアセットはバージョンアップにて魚眼レンズ効果も追加されており、現在のところ、その効果を0にすることができない(画面端が必ず歪む)ようです。そのため色収差のみのエフェクトを期待する場合は注意が必要です。

【Unity】UIEffectを使ったuGUIのディゾルブ

忘年会シーズン

コロナ禍で唯一良かったこと言えば社内の無駄な飲み会が無くなったという事なのに突然社長がオンラインで忘年会をやろうと言い出して連休明けの憂鬱な気分が更に憂鬱になった皆さんこんにちは。絶対地獄やん、勘弁してください。

 

UIEffect

さて、世の中には才能があるのに度量も優れている方がいるようで、かなり便利なアセット群がストア販売ではなくGithub等で無料で公開されています。

「UIEffect」もその一つで、このアセットをUnityプロジェクトに導入することでuGUIに対する17種類以上のシェーダが使用できるようになります

 

github.com

上記リンクからunitypackageファイルをダウンロードし、UnityのメニューからAssets→Import Package→Custom PackageよりUnityプロジェクトに導入することができます。

 

ディゾルブ

"Dissolve"というのは「溶解する」という意味ですが、その意味通り表面が溶けて燃え落ちているような演出をディゾルブと呼びます。

Unityでは3Dモデルに対するディゾルブのシェーダーがアセットストアで販売されていますが、UIEffectではPanelやImageといったuGUIに対してディゾルブの演出を行うことができます。

 

使い方は簡単でディゾルブ効果を付与したいuGUIオブジェクトに対してUIDissolveのコンポーネントをアタッチするだけ。

ディゾルブパターンや縁取りの色などをInspectorで設定します。

 

f:id:Karvan:20201124212831p:plain

 

項目 内容
Effect Factor 効果の強さ
Width 縁の太さ
Softness 縁のぼかしの強さ
Color 縁の色
Color Mode 縁の色のブレンドモード
Noise Texture ノイズテクスチャ

 

ディゾルブパターンはNoise Texture欄に白黒画像のTextureを指定します。

f:id:Karvan:20201124212922p:plain

 

この指定した画像に準じてuGUIが「溶けていく」=「消えていく」ことになりますが、逆に消えている状態から表示したい場合はEffectFactor欄の値を「1」に設定し、Reverseの欄をチェックします。

 

 スクリプトから実行

ディゾルブ演出を実行するにはスクリプトでUIDissolveのPlayメソッドをコールします。

 

using Coffee.UIExtensions;

public GameObject dissolvePanel;

public void PlayDissolve()
{

    UIDissolve panelDisolve = dissolvePanel.GetComponent<UIDissolve>();
    
    panelDisolve.Play();
    
}

 

このuGUIに対するディゾルブは全面表示のPanelに適用することで場面展開などの演出に使えます。

現在作成中の脱出ゲームでは制限時間切れによるゲームオーバーの場面で使っています。

 

f:id:Karvan:20201124213152g:plain

ホラーゲームではないのですがちょっとホラーっぽくなりました。

 

【Unity】破壊系ツール「RayFire」を使ってみよう

急に

11月に入り朝夕の冷え込みが厳しくなってこのまま寒い冬へ突入していくのかなぁと思っていたら、季節が戻ったかのような急な温かさで戸惑っている皆さんこんにちは。私の人生もそうあって欲しいものです。

 

独身の日セール

さて、11月11日は中国では「独身の日」だそうで、それに併せてUnityのアセットストアでは中国だけなく日本を含むアジア圏で大幅なセールが行われていました。

数多くのアセットが50%オフ、70%オフで出品されておりセールというよりは投げ売りに近い状態、中国さん有難う、日本人は中国の歴史も文化も料理も大好きです、ただ、共産党が嫌いなだけです。

 

というわけで、前から欲しかったけど高額で手が出なかったアセットを幾つか購入したのですが、今回はその中でも最も高価だった「RayFire」のご紹介

 

RayFireとは

元々、3DCGの分野では破壊系ツールとして比較的有名だったようで、映画、映像の分野で頻繁に使用されており、実際に「RayFire」をキーに検索してみると3dsMaxでの使い方を紹介するページが数多く検索されます。そしてそのUnity版が「RayFire for Unity」となります。

 

assetstore.unity.com

オブジェクトの破壊や粉砕、崩壊などのシミュレーションを簡単に行うことができるツールで、わざわざメッシュ分割したモデルを用意しなくてもこのツールを使えば破壊によるメッシュ分割から物理演算による破片の飛散まで実装することができます。

まぁ、お値段はそれなり($170.0)にするのですが、今回はそれが70%オフ=6,000円ぐらいで購入できるということで、本当に中国さん有難う、日本人は中国の歴史も文化も料理も大好きです、ただ、共産党が・・・

 

使ってみよう

ゲーム内のオブジェクトを破壊するには、RayFireを使って事前にオブジェクトを破壊(メッシュ分割した)したオブジェクトを作成しておくパターンと、ゲーム実行中にRayFireを使ってリアルタイムに破壊するパターンがあります。

どちらもそれを行うには当然ながらそれなりの設定が必要なのですが、今回は事前に破壊(メッシュ分割)したオブジェクトを作成するパターンを紹介します。

 

1.オブジェクトを用意する

今回は壁っぽいCUBEのオブジェクトを使用します。

f:id:Karvan:20201117203647p:plain

 

このオブジェクトにRayfire Shatterコンポーネントをアタッチ

f:id:Karvan:20201117203804p:plain

「Fragment」ボタンを押すとこのオブジェクトを元にメッシュ分割したオブジェクトが新しく生成されます

 

f:id:Karvan:20201117203924p:plain

 こんな感じに分割されたオブジェクトが作成されます。

このメッシュ分割されるパターンは先程のInspector内のFragments Typeから選択でき、

f:id:Karvan:20201117204104p:plain

こんな感じや

f:id:Karvan:20201117204134p:plain

こんな感じにも分割できます。(他にもパターンがあります)

 

2.Rigidコンポーネントをアタッチ

メッシュ分割したオブジェクトが作成出来たら、そのオブジェクトにRayFire Rigidコンポーネントをアタッチし、ObjectTypeに「Mesh Root」を指定します。

f:id:Karvan:20201117204306p:plain

これにより子オブジェクトとして配置されている分割オブジェクトに物理演算が適用され、RayFireコンポーネントがアタッチされたオブジェクト同士の接触判定が行われるようになります。
 

通常、Unityでこのような動作を行う場合、分割オブジェクトそれぞれにColiderとRigidbodyのアタッチと設定を行う必要がありますが、RayFireでは親オブジェクトにRayFire Rigidコンポーネントをアタッチするのみで、子オブジェクトにColiderとRigidbodyをアタッチする必要はありません

 

3.初期化モードを決める

次に初期化モード(Initialization)を決めます。

これはRayFire Rigidの動作をゲーム開始直後から適用させるのか(At Start)、Script側からメソッドをコールすることで適用開始とするのか(By Method)、のモードで例えばゲーム内のイベントを発火点にオブジェクトの破壊を有効にしたい場合は動作開始モードに「By Method」を指定します。

 

4.シミュレーションタイプを決める

最後にSimulation Typeの設定でRayFire Rigidの動作が適用となった後、実際に物理演算を働かせる着火点を決めます

直ぐにでも物理演算を有効にするには「Dynamic」を、弾丸等の他のオブジェクトとの接触後に有効にする場合は「Sleeping」を指定します。(他にもいくつか設定があります)

 

 ここまでの設定を行うと準備完了です。実際に動作させるとこんな感じになります。

(初期化モードには「At Start」を指定)

 

・シミュレーションタイプがDynamicの場合

 f:id:Karvan:20201117205022g:plain

ゲーム開始と同時に自重によって壁が崩れ落ちます。

 

・シミュレーションタイプがSleepingの場合

f:id:Karvan:20201117205149g:plain

落下物との衝突で壁が崩れるようになります。

 

どちらもかなりリアルな破壊挙動になっていると思います。

RayFireではこれ以外にも爆風による破壊シミュレーション等色々な処理を行うことが出来るみたいなので、また詳しい事が分かったらこのブログで取り上げたいと思います。

 

 

◇プライバシーポリシー

●個人情報の利用目的

当ブログでは、メールでのお問い合わせ、メールマガジンへの登録などの際に、名前(ハンドルネーム)、メールアドレス等の個人情報をご登録いただく場合がございます。

これらの個人情報は質問に対する回答や必要な情報を電子メールなどをでご連絡する場合に利用させていただくものであり、個人情報をご提供いただく際の目的以外では利用いたしません。

●個人情報の第三者への開示

当サイトでは、個人情報は適切に管理し、以下に該当する場合を除いて第三者に開示することはありません。

・本人のご了解がある場合
・法令等への協力のため、開示が必要となる場合

個人情報の開示、訂正、追加、削除、利用停止
ご本人からの個人データの開示、訂正、追加、削除、利用停止のご希望の場合には、ご本人であることを確認させていただいた上、速やかに対応させていただきます。

アクセス解析ツールについて

当サイトでは、Googleによるアクセス解析ツール「Googleアナリティクス」を利用しています。

このGoogleアナリティクスはトラフィックデータの収集のためにCookieを使用しています。このトラフィックデータは匿名で収集されており、個人を特定するものではありません。
この機能はCookieを無効にすることで収集を拒否することが出来ますので、お使いのブラウザの設定をご確認ください。

●免責事項

当サイトからリンクやバナーなどによって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いません。

当サイトのコンテンツ・情報につきまして、可能な限り正確な情報を掲載するよう努めておりますが、誤情報が入り込んだり、情報が古くなっていることもございます。

当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。

●プライバシーポリシーの変更について

当サイトは、個人情報に関して適用される日本の法令を遵守するとともに、本ポリシーの内容を適宜見直しその改善に努めます。

修正された最新のプライバシーポリシーは常に本ページにて開示されます。