忍者ブログ

遊び人の出没場

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

普段はすり抜けるオブジェクト同士に特定の条件で当たり判定させる




現在開発中のこのゲーム、
プレイヤー(AI)同士はぶつかりません。

コライダーがあるオブジェクト同士で、
「このオブジェクト同士はぶつからせたくないなー」て時は、




「Edit」→「ProjectSetting」→「Physics2D」を選ぶと、レイヤー同士のリストが表示されます。
(注意:)3dで開発してるときは「Physics」を選ぼう





「Runner」のチェックを外すことで、Runner同士はぶつからないのです。

ちなみにオブジェクトにレイヤーを設定したいときは、
インスペクタの右上からレイヤーを選択でき

レイヤーを追加するには





「Edit」→「ProjectSettings」→「Tags and Layers」を選択。
インスペクターに、Tag、SortingLayer,Layerが表示されます。


こんな感じで、
オブジェクト同士をぶつからせたくなければエディタを編集するだけでOK。





さて、ここで本題。


私が開発しているゲームのプレイヤーは「ブースト」がつかえます。

ブーストはただ早くなるだけじゃなくて、ぶつかることで相手を妨害出来たら、より競争としての駆け引きが成り立つんじゃないかと考えた。

今回やりたい事は、ブーストで相手を転ばせたい! つまり、

ブーストの時だけ当たり判定を有効にしたい!!


というわけで
ぶつからない設定をしている物体同士が、ある条件の時だけぶつかるようにする方法を実装してみました。


とても簡単です。


まず、「BoostRunner」というレイヤーを用意する。
これとRunnerレイヤーは判定が出来るように設定。↓







↑ RunnerとRunnerはすり抜ける、BoostRunnerとRunnerはぶつかる、BoostRunner同士もすり抜ける……


あとはブーストの発生時にこのレイヤーに切り替えます。

//プレイヤーのレイヤーを「BoostRunner」に切り替える
gameObject.layer = LayerMask.NameToLayer("BoostRunner");



ブーストが終了、もしくは相手にぶつかったら

gameObject.layer = LayerMask.NameToLayer("Runner");

等のスクリプトで元に戻します。


これで、普段はすり抜けるプレイヤー同士がブーストの時だけ当たり判定するようになりました!

あとは、いつも通り、ぶつかったときに転ぶなりすればいいです。



以上。レイヤーを使った当たり判定制御でした。





拍手

PR

両面で別々のテクスチャを設定する方法

 

またまたペラリンネタです。

このキャラは、テスト用紙のキャラなので、
表は顔。
裏は「テストの点数」(スコア)を表示していました。


 


ところで今、Planeの裏面はこうなっています。


 

ふむ。
まずは裏も描画したいのでカリングをoffにしてみよう。
これで裏表別々にテクスチャを設定したら出来上がりや!




 

ちゃうねん。

裏表作りたいだけなんだけど
意外と手間がいりそう…?


--------------------------
ところで、DirectXで処理を自作してた時は、
表と裏で板ポリゴンを二枚用意し、0.1くらい離して描画してました。

同じことをunityでやると、clothが別々に動いてただの二枚の布になりました。
-----------------------------

ググったところ、ピンポイントで発見。
http://matatabi-ux.hateblo.jp/entry/2017/08/09/100000

どうやらテクスチャ両面設定は標準ではなかったらしい。

シェーダーをいじって完成。




 

実行結果も違和感なしです。

以上。
意外と覚えておくと今後得しそうな処理でした。

 

拍手

clothで遊ぶ

夏休みにUnityを始めて早二週間が立とうとしている。
多分基礎はある程度ついたと思うので、記事を色々読み漁ってみた。

そんなある日興味を持ったのが「cloth」。

私は過去に制作したゲームで、
紙が主人公(※名を「ペラリン」という)のアクションを作っていた。
 頂点いじってアニメーションさせて、かなり大変だったのだが、
紙の動きだけ見たら、自己評価は「低」。



もっとなんとかならなかったのかと思うけど多分、当時の技術ではあれが精いっぱいだった。

そこで、clothをペラリンに適用したら面白いんじゃないか

※clothは本来、キャラの服等をなめらかに動かす物らしい。そのへんの使い方はググると沢山出てくるので興味ある方は調べてくださいm(__)m

[clothの使い方]

(1)planeを配置します。

(2)「SkinnedMeshRenderer」「Cloth」を適用します。

(3)テクスチャをはって手足をつけます。


動かしてみたらかなりなめらかに動く。


あとはこれを実用できたらアニメーションさせるのも楽しいだろうなあ。


拍手