問題タブ [rigid-bodies]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - RigidBody が他のコライダーを通過するのを防ぐ方法
ボックスコライダーでコインRigidBody
とその周りの壁があります。試行目的で、次のコードをコインに適用しました。
ただし、コインが壁を通過することもありますが、速度を 30 から 50 ポイントに上げると、最初のクリックで壁を通過します。私はたくさんグーグルで検索しましたが、DontGoThroughThings スクリプト以外は何も得られませんでした。これは私にとっては機能しないか、使用方法が本当にわかりません。
私は常にコインに継続的なダイナミクスを追加し、壁に継続的な衝突検出を追加しましたが、それでも機能しません。
unity3d - Unity3D - RigidBody プロパティが実行時に動的に変更されないようにする
私は Unity を初めて使用し、サイコロを振るシミュレーションで遊んでいます。剛体を持つ 1 つの立方体と、それに関連付けられた StandardAssets DragRigidbody スクリプトがあります。プレビューを実行すると、立方体をうまくドラッグできます。立方体を飛ばすと、その方向に飛び去り、予想どおりに転がります。
キューブを複製してプレビューを実行すると、問題が発生します。両方のキューブをドラッグすることはできますが、投げることはできません。どちらかを飛ばそうとすると、マウスボタンを離した瞬間に立方体が完全に動かなくなります。たまたま空中にあると、重力がほとんどないかのように、非常にゆっくりと浮いて戻ります。
私は実際にこの動作の原因を知っていますが、なぜそれが起こっているのかわかりません. これらは、プレビューを実行する前の立方体の Rigidbody プロパティです (必要な値)。
Mass: 1
Drag: 0.5
Angular Drag: 0.5
// 残りはデフォルト
...しかし、複数のキューブでプレビューを実行すると、キューブをこれらにドラッグするとすぐに値が変化することがわかります。
質量: 1
抗力: 10
角度抗力: 5
これがフリング機能の喪失の原因です。1 つのキューブだけでは値が変化しないのに、複数のキューブでは値が変化するのはなぜですか?
c# - RigidBody2D フリーズ X 位置
通常の RigidBody を使用するのではなく、Unity の RigidBody2D を使用して次のコード行をエミュレートする方法があるかどうか疑問に思っています。
プレイヤーの x 位置が何かと衝突したときにフリーズするようにします。上記を使用することはできますが、3D コリジョンを使用するには、すべての 2D コリジョンを作り直す必要があります。避けたい痛み。
c# - ユニティ RigidBody 2D トランスフォームで重力が機能しない
スプライトを作成し、rigidbody 2d コンポーネントを適用しました。正常に動作しています。このコードを書きましたが、ゲームのプレイを開始すると、しばらく動作しますが、その後、重力が null のように見えます。これは、rigidbody を意味します。キーを離しても下がらない
// Update is called once per frame
void Update () {
if (Input.GetKey (KeyCode.LeftArrow)) {
posX--;
} else if (Input.GetKey (KeyCode.RightArrow)) {
posX++;
}
if (Input.GetKey (KeyCode.UpArrow)) {
posY++;
私がやりたいことは、ヘリコプターを上下左右に動かすことです(ユーザーが制御できます)が、ユーザーが操作していないときは、重力をデフォルトとして機能させ、ヘリコプターが重力のために下降するようにしたいのですが、どうすればそれを達成できますか?
} else if (Input.GetKey (KeyCode.DownArrow)) {
posY--;
}
angle -= Input.GetAxis ("Horizontal");
angle = Mathf.Clamp (angle, -10, 10);
}
void FixedUpdate()
{
transform.eulerAngles = new Vector3 (0,0,angle);
transform.position = new Vector2 (posX * Time.deltaTime, posY * Time.deltaTime);
}
}
c# - Bulletプレハブスクリプト
このスクリプトでエラーが発生しましたか?
UnityEngine には剛体の定義が含まれていません (行: 22、24)
c# - リジッドボディをスムーズにlerpする
プレーヤーが画面の左側を叩いたときに、プレーヤーを左に移動させたいと思っています。現在、マウス ボタンを押している間だけ、プレーヤーが動きます。私が本当に望んでいるのは、画面を 1 回押すと、目標位置に到達するまで彼が左に移動し続けることです。
これを可能にするためにコードに欠けているものを誰か教えてもらえますか?
実際のプレーヤーを移動するのではなく、プレーヤーの剛体を移動しているため、私のメソッドは FixedUpdate にあります。