[過去ログ] 【ゲームエンジン】Unity初心者質問スレBuild3 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
855: 名前は開発中のものです。 [] 2020/03/16(月) 01:02:18.12 ID:Q/FwoYvw(1) AAS
iPhoneだと見れん
856
(2): 名前は開発中のものです。 [sage] 2020/03/16(月) 09:55:12.73 ID:LdLDk6nR(1/3) AAS
Unity2018を利用しています。
uGUIでユーザインターフェースを実装しています。

クリックした場所へ移動するというMMOでありがちな操作方法で動いています。

GUIをクリックしたときは動かないようにしてあるのですが、GUIの閉じるボタンをファンクションで動作させると、
GUIが閉じた瞬間に閉じるボタンがあった場所へ向かって移動をしてしまいます。
どうも閉じるボタンのファンクションが実行され、パネルが閉じた後でクリックした場所のRaycastを取得してしまい、
移動が暴発してしまうようでした。

仕方なくパネルを閉じる場合はは閉じるボタンのファンクションではなく、プレイヤーを操作しているクラス内で
閉じるボタンがクリックされたかどうかを判定しパネルを閉じているのですが、
毎回GetComponentやらFindやら重い処理で閉じるボタンの判定することとなったり、
すべての閉じるボタンを保持しておいてRaychastで取得したボタンと一致するかどうかを判定する、
とかボタン登録の量から考えて非現実な手法であったり、
名前を統一してその名前で作られたボタンを閉じるボタンにする、としたら同階層で名前の違う閉じるボタンの実装が必要になったりと
うまくいきません。

何よりボタンのファンクションではなくプレイヤーの動作アクションのクラスでどうにかしようとしている所がスマートではないことが気になります。

どうしたら移動を暴発させずに閉じるボタンでパネルを閉じることができるでしょうか?
857
(1): 名前は開発中のものです。 [sage] 2020/03/16(月) 12:03:58.90 ID:BLklYMyv(1/4) AAS
設計のやり直しするしかない。
まずは入出力のフローを整理することから。
858
(1): 名前は開発中のものです。 [sage] 2020/03/16(月) 12:08:04.17 ID:BLklYMyv(2/4) AAS
または、クリックのたびに最後にウィンドウを押したのか、画面を押したのかフラグを持つか。
859: 名前は開発中のものです。 [sage] 2020/03/16(月) 12:21:39.81 ID:ei1DnjJY(1/2) AAS
作成したラグドールを再編集したり削除したりする方法をご存知の方が居ましたら教えて頂けませんか?

再生するとぐにゃりと倒れるようになったのですが、腕の設定を間違えてしまって肘から先が高速回転しています。
ですが、コンポーネントらしき物も見当たらず修正も削除もできません。
作成したラグドール設定はどこに保存されたのですか?
860
(1): 名前は開発中のものです。 [sage] 2020/03/16(月) 12:26:40.07 ID:BLklYMyv(3/4) AAS
ラグドールはよく知らんのですまんが、ラグドールヘルパーなるアセットがあるのでそれでなんとかならんかね?
861: 名前は開発中のものです。 [sage] 2020/03/16(月) 12:46:57.90 ID:ei1DnjJY(2/2) AAS
>>860
ラグドールヘルパーを使ってもラグドールは設定できるのですが(手動の部分を勝手に設定してくれる?)結局それで設定したラグドールは何処にあるの?と同じ事に困ってしまいます。

あとから変更する事は出来ないのかもしれませんね・・・。
862
(3): 名前は開発中のものです。 [sage] 2020/03/16(月) 13:25:01.26 ID:LdLDk6nR(2/3) AAS
>>857
申し訳ございませんが理解ができないのでもう少し詳しくお願いします

>まずは入出力のフローを整理することから。
この点ですが、クリックのたびにRayCastがGUIに接触しているかどうかの処理は毎回入れています。
しかし、閉じるボタンを押したときの挙動の場合
クリック→閉じるボタンのファンクション実行(GUIを閉じる)→Raycastの判定(この時点でGUIが閉じているため、RaycastにGUIが引っ掛からない)
という挙動となってしまいます。

この順番を入れ替えることができるということでしょうか?
クリック時に先にRaycastの判定さえ先行えれば即解決する問題なのですが、どうすれば順序を入れ替えられるのでしょうか。

>>858
>または、クリックのたびに最後にウィンドウを押したのか、画面を押したのかフラグを持つか。
前述の通りRaycastの判定は毎回行っており、ここからさらにどこでフラグを立てればよいかがわかりません

仮に閉じるボタンの所にフラグを設けた場合、FindやGetComponentを使わずに
プレイヤー操作コンポーネントにフラグを送るため、全てのコンポーネントに参照を持つ、
もしくはプレイヤー操作コンポーネントのファンクション自体を閉じるボタンにしてしまう、
という方法ぐらいしか思いつかないのですが、
プレイヤーの操作を行わせるコンポーネントはDBサーバから取得したデータをもとに毎回インスタンス化しているため、
全部に動的に割り当てていくというのは現実的ではないように思われます。

良い方法があるのでしょうか? どうかご教示願います。
863
(1): 名前は開発中のものです。 [sage] 2020/03/16(月) 13:34:36.73 ID:ZW9c9VSl(1/2) AAS
>>856
自分はタイマー作って処理してるけど
UI上にマウスある時はタイマーの値が0.1とか小さな値が代入され続ける
これが0になるとキャラ操作可能になる
タイマー側は0以上だと絶えず減算し続けている仕組み
UIの動作が複雑になってくるとスクリプトの動作順や1フレーム単位での動機のズレで誤爆が起きたり起きなかったりして面倒な問題に
ウィンドウの開閉で問題が出やすいと思う
だから単純だけど誤爆が起きようが無いタイマーで数フレーのラグを稼いで操作を切り替えてるけど
864
(1): 名前は開発中のものです。 [sage] 2020/03/16(月) 13:35:58.52 ID:ZW9c9VSl(2/2) AAS
同期だった
865
(1): 名前は開発中のものです。 [sage] 2020/03/16(月) 13:47:15.65 ID:BLklYMyv(4/4) AAS
>>862
根本から作り直す必要ありと言う意味です。
レイキャストならどのように取り出すかなどforechとかで判定できるけど、作りがそれに対応できない感じなのでそう書きました。
後述は、できるならと思いましたが、参照先が不特定多数のようでよくわからないですが構造的に難しいなら見直した方がいいです。
866: 名前は開発中のものです。 [sage] 2020/03/16(月) 13:50:24.17 ID:4qkAYl3r(1) AAS
>>862
GUIを閉じるフレームだけやり過ごせばいいので、

GUIのボタンクリックのイベントでコルーチンを呼んで、1フレーム待ってから閉じる処理を呼ぶ

ボタンクリックのファンクションで
invokeを使って時間差で閉じるファンクションを呼ぶ

あたりでいけると思う
867: 名前は開発中のものです。 [] 2020/03/16(月) 14:56:23.37 ID:OslewfXc(1) AAS
モディファイアーでミラーリングした物が、クリッピングしてサブディビジョンサーフェスしても
点線的なのがミラーした側に出てこないんだがこれどうやって出すの?
868
(1): 862 [sage] 2020/03/16(月) 15:18:30.98 ID:LdLDk6nR(3/3) AAS
>>863-865

ボタンとRaycastの判定がマルチスレッドで行われていることまで頭が向きませんでした。
ありがとうございました。

とりあえず修正が少なそうなコルーチンで想定通りの動きを起こすことができました。

同期ずれの方はこれでどうにかなるのかは不明ですが、今後問題になるようなら改めて大幅な修正をしようと思います。
単純に各メニュー画面を開いて処理させているだけなので、そんなに複雑なことをやっているつもりはないんで大丈夫だと思っていますが。>>863
869: 名前は開発中のものです。 [sage] 2020/03/16(月) 17:28:33.58 ID:81ZCqdDT(1) AAS
メッシュが空っぽのPrefubをシーン内に自動生成して
後からC#でメッシュを割り当てたいのですがやり方が分かりません。

var mesh = (Mesh)Resources.Load("Assets/Resources/Mesh/hogehoge");
Debug.Log(mesh);

まずはこんな感じでメッシュを呼び出せるかと思いましたが、
コンソール上では"Null"になってしまいました。。。
870: 名前は開発中のものです。 [] 2020/03/17(火) 00:18:23.21 ID:PLSsds2i(1) AAS
>>868
いやマルチスレッドとかないから
871: 名前は開発中のものです。 [sage] 2020/03/17(火) 06:51:01.43 ID:l0ok0yUe(1) AAS
Play中にNavmeshAgentのPriorityの設定をいじっても反映されないんですけど
これ反映させるためのメソッドかなんかありますかね?

・Agent同士で当たり判定を残したい
・でもワープさせたいので、その都度一度AgentのEnableを切りたい
・切ったら当たり判定なくなってる

AgentじゃなくてObstacld使えば当たり判定あるんですけど
一応Destination移動もできるようにしときたいからAgentにしたいんですよね
872: 名前は開発中のものです。 [sage] 2020/03/17(火) 13:31:53.59 ID:s0pCT5yE(1) AAS
Unityでゲーム作りたいと思い始めたんだけどUnity製ゲームのキャラモデルって基本的にヒューマノイド使ってるの?
ヒューマノイドって補助ボーンが使えないとか色々制限があるって聞いたんだけどどうなんだろう?
873: 名前は開発中のものです。 [sage] 2020/03/17(火) 17:52:53.51 ID:6NXECLVB(1) AAS
iosアプリを作っていて、TouchScriptを用いてタップとフリック操作を取り入れたのですが、フリック操作をした時にまずタップ操作として認識されてしまいます。
競合しないようにするにはどうすればいいでしょうか
874: 名前は開発中のものです。 [sage] 2020/03/17(火) 18:00:15.93 ID:NeByzchF(1/2) AAS
タップは離したときにタップ位置と近かったらタップ動作、とかでだめかな
875: 名前は開発中のものです。 [sage] 2020/03/17(火) 18:02:01.78 ID:NeByzchF(2/2) AAS
まあそうでなくとも同じ動作で始まるからタップでタイマー開始、一定時間後に大きく動いてなければ、とかね
876: 名前は開発中のものです。 [sage] 2020/03/17(火) 19:31:29.24 ID:X2NYOiQv(1) AAS
タイマーだろうね。タップなんだから、0.3秒以内で離したらタップ処理。それまではフリック処理の準備、という感じかしら。
877
(1): 名前は開発中のものです。 [sage] 2020/03/17(火) 22:42:44.88 ID:jPxCje6v(1) AAS
>>856
常にUIの一番下に何も表示しないimageを敷いといて、そこでpressを受け取ったときのみ、3D面にレイキャストする
878: 名前は開発中のものです。 [sage] 2020/03/18(水) 08:43:50.70 ID:Er59hwEQ(1) AAS
Unity+Playfabを利用しています

アイテムをキャラクターのインベントリに格納した際、カタログアイテムの方で記述したカスタムデータが
インベントリ内のアイテムインスタンスに反映されません

色々調べたところ英語のフォーラムにカタログアイテムのカスタムデータを明示的に取得してインベントリ
のアイテムインスタンスのカスタムデータに入れるということが書かれてありました
しかも、Unity上でカタログアイテム自体単体で取得する方法がないため、カタログのアイテム全部を取得し、
ループ検索で一致するアイテムIDからカスタムデータを取り出して、アイテムインスタンスに入れるとありました

アイテムを追加するたびにループをしてまでカスタムデータを取得しなくてはならないというのもばかばかしいことこの上ないのですが、
そもそも内容を見る限り、カタログアイテムのカスタムデータはアイテムの性能を決める重要な役割をしているものと思われるのですが、
これがインスタンス化した時に反映されないのはおかしいと感じています

フォーラムを見る限り何年も前からこの状態らしいのですが、そもそもカスタムデータとは何のために存在しているのでしょうか?
もしアイテムの性能を決定するものでないとした場合、アイテムの性能はどこに記述すればよいのでしょうか?
879: 名前は開発中のものです。 [sage] 2020/03/18(水) 14:51:58.44 ID:6iKxrNBv(1) AAS
>>877
多分だけど一瞬で反応するから問題の同じ挙動になると思う
必要なのは移動処理の判定開始を遅らせるとかキャンセルする系の処理だよ
1-
あと 123 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.020s