2

私のSpriteKitプロジェクトでは、組み込みの素晴らしい物理エンジンの使い方を学んでいます。ノードにアタッチされたインスタンスを使用してこれを実現していますがSKPhysicsBody、これまでのところうまくいきました。私の現在の設定は、ノードを追加するときです。そのベクトルを一定physicsBodyの速度に設定します。velocity手動で速度を固定値に設定しても、数秒間ノードが衝突した後、速度が低下します。これは、実際の物理 (複数の衝突によるエネルギーの損失) をシミュレートするため、デフォルトの特性であると思います。この 行為 を 止め たい. たとえば、多数の衝突にもかかわらず、すべてのエネルギーが完全に「保存」され、速度が失われないことを望みます。ここに私が無駄にしようとしたいくつかのことがあります.

  1. physicsBody.linearDamping = 0;
  2. physicsBody.friction = 0;

これはプロパティでもありますか?それとも、この動作は のプロパティのphysicsBodyプロパティに起因しますか?SKScenephysicsWorld

4

2 に答える 2

1

density(または)もmass考慮する必要があります。restitution一部のボディ構成では、速度の緩みを単独で解決することはできませんでした。

于 2016-08-28T02:14:43.003 に答える
1

Apple ドキュメントのレビューに多くの時間を費やした後、私は答えを見つけました。のrestitutionプロパティはSKPhysicsBody、そのボディが他のボディと衝突したときにどれだけのエネルギーが失われるかを制御します。このプロパティは の範囲にある float であり[0 ... 1]、衝突で失われるエネルギーの量に反比例します (数値が大きいほど、失われるエネルギーは少なくなります)。たとえば、このプロパティの既定値は で.2、かなり高いエネルギー損失を表します。私の問題を解決するために、このプロパティを1各体に設定して、相互作用するときにエネルギーが失われないようにしました。

self.someNode.physicsBody.restitution = 1.0f;

結果:これにより、問題が 100% 修正され、数時間のシミュレーションの後、物理体はエネルギーをまったく失いませんでした。

于 2014-05-30T06:59:46.467 に答える