忍者ブログ

ゲーム作成状況を載せて行きますよ。 いつ完成する事やら・・・ ダージリンおじさん メール:moumouojisan@yahoo.co.jp
04 2018/05 1 2 3 4 56 7 8 9 10 11 12 14 1920 21 22 25 2627 28 29 30 31 06

05.24.16:09

レイヤーの引数は間違いだった




残念ながら前回の記事は嘘と言う事になる。
実際レイヤー番号を入れてみたものの全く反映
されている気配が無かったのだ。

結果から言うと成功。
ただしやり方が違っていた。このレイヤーのID?
を取得するにはビット演算という多少面倒な事を
しないと取得できないらしい。しかしそんなものは
必要なくとても簡単な方法があったので書き留めて
置く。そしてそのコードを書いてくださった方、
本当にありがとう。





クラスのメンバに「public」としてLayerMask型を宣言
してやる。これだけ。後はこのスクリプトをアタッチ
しておけば現在のレイヤーが選べるようになっている。





一番下にあるように「Mask」という項目が追加される。
「Maskは」自分のつけた変数名になるのでそこは注意。




スクリプトにいったん戻り
レイヤーマスクの引数にこの変数を添える。私は
そのままでも反映の確認が取れたが、メンバとして
.valueを付けるとの事。今度こそ反映されるはずだ。
是非やってみて欲しい。

私はこれで余計な当たり判定に悩まされずに済んだ。
カクカクしたボックスの挙動もスムーズになった。
とりあえず一歩前進である。
PR

05.23.17:33

どうやらRaycastHitにプレイヤーも感知されていた話

最近文字の大きさを少し大きくしてみたは良いものの、
逆にみにくいような気がしてならないんですが皆様の
意見お待ちしております。


さて、
話は本題に入りまして。

プレイヤーの中心からレイを真下に飛ばして
当たり判定を取っていますが、面の法線の逆側
(ポリゴンの裏側)からでもしっかり拾っている
ことが分かりました。あたった場所にテキトーな
モデルを配置することで発見することが出来ました。

しかしながらとても不思議な動きをします。
マップにあったと思ったら徐々にプレイヤーの位置
までモデルが上がってくるのです。

はてな?


例え二つ当たったとしてもどちらかの座標にモデル
が再配置されるはず。ここら辺は良く分からないので
LayerMask機能を使う事にする。




layermaskはただのint型の数値で、
ここにレイヤー番号を入れる事で定めた物しか
衝突しか検知しない様にできる引数みたいです。





これを利用すれば恐らくモデルが中に舞うと言った
現象には悩まされないと見ています。

まぁ、
やってから記事書けよって話なんですけども。


結果は後ほど。

05.23.17:02

Update()がだめならFixedUpdate()に全て書けばいい




という荒療治を思いついた。

と言うよりはという助言を頂いた。
いや、方法の1つとして
知ってはいたけどもと言うべきか。

結果から言うとカクカクとした動作は
直った。しかしとても重要な問題が。
FixedUpdate()に書いてしまうと固定
FPSになるということ。変更すれば
物理演算も加わるので目に見える
パフォーマンスの低下に繋がると
言う事。

Unityは物理演算を謳っている様に比較的
簡単に扱える仕組みになっている。この
物理演算の処理を軽くするためにUnityは
物理演算用の関数を用意している。

簡単なようで面倒な仕組み。
このままだとFPSの変更をオプションで
変えられない。どうやらスクリプトから
FixedUpdate()の呼ばれる頻度を変えられない
からだ。

う~ん参ったものだ。

05.18.02:07

transformが重い?

皆さんご存知Getcomponent()関数って重いですよね。
で、それと同じくtransformも重いんだそうです。

じゃあ予めキャッシュしておけば良いのかといったら
私の場合なぜか改善しなかった。使っている間FPS
は著しく落ち始め、使うのを辞めるとまた元に戻る。


皆さんは一体どう対策をされているんだろうか?

05.17.16:41

滑らかにはなるがゲームスピードが不安定に



消してフレームレートが落ちている訳ではない。
いや、どうだろうか?60に設定してるのに少し
高めになっている。ここら辺もおかしい所。

一瞬カクッとくる。

FixedUpdate()の頻度を上げるだけでは
解決しないらしい。
   NEXT >>>