[過去ログ] 【ゲームエンジン】Unityなんでも質問スレpart10 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
900: 2023/07/20(木)17:58 ID:M5EOneZ2(1) AAS
風立ちぬのときは禁煙してたのにタバコ吸いたくなって劇場帰りに買ったぐらい美味そうだったのに
イマイキは何だ!あまりに不味そうで禁煙しちまうとこだったぜ!m9( ´ー`)y-~~ドーン!
901: 2023/07/21(金)10:32 ID:Z+zOC6cO(1/3) AAS
>>897
ただ引き合うだけで良いのか、極性を考慮した動きが欲しいのかでも話が変わってきますが
とりあえず前者と仮定してお話しますね。
2DならPointEffectorがありますが、3Dならスクリプトが必須だと思います。
引きあうオブジェクトは両方Rigidbody(物理演算コンポーネント)とColliderを持ってる前提として、やることは大きく分けて4つです。
1.近くのオブジェクトのColliderを検出する
外部リンク[html]:docs.unity3d.com
2.検出したCollider(引き寄せる相手)がRigidbodyを持っているかチェックする
外部リンク[html]:docs.unity3d.com
3.引き合う力を計算する
4.AddForceで双方のRigidbodyに3で計算した力を加える
外部リンク[html]:docs.unity3d.com
これらの処理をFixedUpdateの中に記述すればOKです。
902(1): 2023/07/21(金)10:36 ID:Z+zOC6cO(2/3) AAS
3の手順だけちょっと複雑になるのでコード置いておきます。(動作確認はしてないのでミスってたらごめんなさい)
------------------------------------------------
以下はメンバ変数定義に書いてください。
//引き寄せる力
public float intensity = 10;
//引き寄せる最大距離
public float maxDistance = 10;
//自分のRigidbody
public Rigidbody myRigidbody;
------------------------------------------------
以下はFixedUpdateの中の3の処理(otherRigidbodyは2で取得した相手のRigidbodyが代入されてるものとする)
//座標の差分を計算
Vector3 diff = (otherRigidbody.position - myRigidbody.position);
//距離を計算
float distance = diff.magnitude;
//距離を0~1の範囲で正規化する(ついでに0~1の範囲外を捨てる)
float normalizedDistance = Mathf.Clamp01(distance / maxDistance);
//近くの時力が強くなるようにしたいので反転する
normalizedDistance = 1.0f - normalizedDistance;
//磁力は距離の二乗に反比例して減衰する
normalizedDistance = normalizedDistance * normalizedDistance;
//力の向きを計算
Vector3 direction = diff.normalized;
//力を計算する(向き*大きさ)
Vector3 force = direction * (normalizedDistance * intensity);
どうしても無理ってなったらまた聞いてください。
903(1): 2023/07/21(金)21:45 ID:/7F3Df0u(1) AAS
コライダーについて質問です
2dなのですが、コライダーをプレイ時に表示させるにはどうしたらいいでしょうか
window→analyse→physics debugger内にオンオフの項目がないようです、、、
>>902
ありがとうございます。
pointeffecterってまさにドンピシャの機能ですね
904(1): 2023/07/21(金)22:55 ID:Z+zOC6cO(3/3) AAS
>>903
残念ながらPhysicsDebugger自体は3D専用の機能ですが、
ProjectSettings->Physics2D->GernalSettings->Gizmosの項目で
AllCollidersを有効にすればGameViewのGizmoでも常に表示されるようになります。
905(1): 2023/07/22(土)06:12 ID:aFQJKiG2(1) AAS
質問です。
当たり判定の入れ方はAdd Component→Mesh Collider→Convex=凸をチェック
かと思うのですが、アセットによっては物体に対して正しく物理判定が
行われてない物があるので、自分で当たり判定を設定したいのですが、
どうすればいいでしょうか?
宜しくお願いします
906(1): 2023/07/22(土)14:18 ID:1sQon9ud(1/3) AAS
ScreenToWorldPointを使いたいのですが、Camera.main.ScreenToWorldPointとしてこの関数にアクセスすることが出来ると思います。これはデフォルトのカメラにアクセスしているようです。
ScreenToWorldPointを自分で追加したカメラから使えるでしょうか?
自分で追加したカメラのタグを「MainCamera」に設定し、カメラのx座標を少しずらしました
そして
print(Camera.main.transform.positon);
としてみましたが、位置は0,0,-10となります
これはデフォルトのカメラが読み込まれているようです
907(1): 2023/07/22(土)14:25 ID:1sQon9ud(2/3) AAS
>>904
どうも
allways show colliders可と思いますが、ここをオンにしても変わらないですね 諦めます(*´ω`*)
908(1): 2023/07/22(土)16:29 ID:wG4fwfG7(1/2) AAS
シーン内で使うRect Toolという
オブジェクトを線で囲って四隅が青の丸になってて
オブジェクトを移動できるやつなんですが
なぜか線の部分がオレンジになってしまいました。
元に戻すにはどうしたらいいでしょうか
909(1): 2023/07/22(土)18:52 ID:CjzYDVTE(1/4) AAS
>>907
そもそもGameViewのGizmoが無効になってるとかじゃないでしょうか?
GameViewの右上のGizmosボタンを押してみてください。
910: 2023/07/22(土)18:54 ID:1sQon9ud(3/3) AAS
>>909
ありがとうございます
ほんまや(*´ω`*)見切れてました
911(1): 2023/07/22(土)19:04 ID:CjzYDVTE(2/4) AAS
>>905
「正しく物理判定が行われてない」というのは
「形状が一致度が不十分なので任意の形状の判定を付けたい」という意味でしょうか?
それともそもそもすり抜けてしまう等の症状ですか?
912: 2023/07/22(土)19:14 ID:CjzYDVTE(3/4) AAS
>>906
シーン上にMainCameraタグが付いたオブジェクトが複数存在してしまっているのが根本的な原因かと思いますので、
デフォルトのカメラからタグを外してしまうのが早いかと思います。
それが出来ない事情があるのであれば、SerializeFieldを使用してInspectorで参照を設定するか
サービスロケーターパターン等を活用してカメラの情報をスクリプトに渡して下さい。
913(1): 2023/07/22(土)19:22 ID:CjzYDVTE(4/4) AAS
>>908
画面見ないことにはなんとも言えませんが、選択中のアウトライン表示とはまた違う感じでしょうか?
もしそれのことであればシーンビュー右上のGizmoメニューからSelection Outlineをオフにすれば無くなります。
914: 2023/07/22(土)23:59 ID:wG4fwfG7(2/2) AAS
>>913
これでした
ありがとうございます
915: 2023/07/23(日)12:15 ID:o5q3w3gH(1) AAS
3dプロジェクトは作成されるまで時間かかりますね。
916: 2023/07/23(日)13:38 ID:a1F9qNXb(1/3) AAS
クルマのインジェクタ故障で交換修理に8万ほどかかるんですが、これは普通は保険でなんとかするものなんですか?自賠責保険とかいうやつ?
917(1): 2023/07/23(日)20:08 ID:L7J/1zBC(1) AAS
>>911
例えば洋式のトイレだと、この方法だと便座に対して平行・平に物理が引かれているんです。
元来水が流れる穴までは空洞になっているに。
なので「形状が一致度が不十分」って事なので、自分で物理判定を作れたら作りたいなと。
918(1): 2023/07/23(日)20:43 ID:EjVBE2B/(1/2) AAS
>>917
物理演算で"動かない側"が複雑な形状なのであれば単にConvexのチェックを外すだけで大丈夫です。
物理演算で動くものを複雑な衝突形状にしたいのであれば凸形状を組み合わせて近似する必要があります。
外部のモデリングツールかProBuilderで凸形状を複数作って組み合わせることで実現できるかと思います。
919(1): 2023/07/23(日)20:51 ID:a1F9qNXb(2/3) AAS
質問ですけど
スキン変形でアニメーションしている物体に、同じスキン変形を追従するメッシュコライダーを付加できますか
それとも球やカプセルで変形を近似しますか
920(1): 2023/07/23(日)21:09 ID:EjVBE2B/(2/2) AAS
>>919
基本はボーンにカプセルを付けて近似することになります。
一応MeshRenderer.BakeMeshを使う方法(重いので非推奨)や、
ComputeShaderとMeshAPIを使用する方法もあります。
外部リンク:qiita.com
921: 2023/07/23(日)21:21 ID:a1F9qNXb(3/3) AAS
>>920
なるほど~
ありがとうございました
922(1): 2023/07/24(月)19:53 ID:uv8K+nPJ(1) AAS
矢や弾丸って物理エンジンで飛ばすだけだと思ったけど、炸裂弾とか追跡弾とか考えるとちゃんとNavmeshで誘導したほうがいいのかもな
923: 2023/07/24(月)20:33 ID:zXQVHyaW(1) AAS
えっ?
そんなんDistancejointとかで徐々に狭めてけば良くね?
924: 2023/07/24(月)22:20 ID:8cHrNWuA(1/2) AAS
>>922
NavMeshは複雑な地形でひっかからず適切に回り込んだりするような高度な経路探索に使うものなので、
誘導弾で使うというのはあまり一般的ではないかと思います(処理速度的にも)
一般的な誘導弾であれば目標向かって速度を変化させるようなバネトルクを実装してあげるのが良いかと思います
例えばメタルギアソリッドのニキータ(リモコンミサイル)みたいなのをAIが撃ってくるとかだったら話は別ですが、
その場合も負荷的に通常の弾は物理演算かRaycastによる実装をお勧めします
925(1): 2023/07/24(月)22:32 ID:45jg4Gqo(1) AAS
UEのシェーダーはブループリントと同じく汎用の関数を作れて、複数のシェーダーでそれを使い回せるんですが、unityでもそれは可能ですか?それともunityでは一つのシェーダーを作って、ブーリアンやら数値をいじることでしか一つの関数を使い回す事はできませんか?
926(1): 2023/07/24(月)23:23 ID:8cHrNWuA(2/2) AAS
>>925
ShaderGraphを使っているのであればCreate->ShaderGraph->Subgraphで再利用可能な自作ノードを作ることが出来ます。
コードで書いてる場合はcgincを利用することで機能を別ファイルに切り出すことが出来ます。
927: 2023/07/24(月)23:55 ID:/mdEVYE3(1) AAS
>>926
わあーまさにこれだ!ありがとうございます!
928: 2023/07/25(火)14:51 ID:6t5mE079(1) AAS
>>918
わかりました。やってみます!
ありがとうございました。
929(1): 2023/07/25(火)18:21 ID:wV1K7Tan(1) AAS
UIがマジ糞すぎるだろ
右クリック操作失敗したらクソ長い処理始まって終わらないから強制終了したわ
確認ウィンドウ付けろやゴミが
上下前次1-新書関写板覧索設栞歴
あと 73 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.012s