私はゲームに取り組んでおり、現在、一定の距離で球の周りを継続的に周回しているオブジェクトがあります。オブジェクトが互いに跳ね返るようにする必要があります。誰かが私がこれを行う方法を知っていますか?
衝突検出を機能させており、各オブジェクトにはバウンディングスフィアがあります。衝突点を取得できます。各オブジェクトから現在の回転ベクトルを取得し、結果の「バウンス」角度(回転するベクトル)を取得して、各オブジェクトが新しいベクトルの周りを周回し続けるようにする必要があります。
それが意味をなさない場合、または他に何か必要な場合はお知らせください。これはUnity3Dを使用して行われることに言及する必要があります(私はリジッドボディ、またはパフォーマンス上の理由から組み込みの物理エンジンを使用していません)
編集:
これが私が試したことです:
public void OnTriggerEnter(Collider collider)
{
// Determine resultant rotation axis
Vector3 collisionNormal = collider.ClosestPointOnBounds(thisTransform.position);
rotationAxis = Vector3.Reflect(rotationAxis, collisionNormal);
}
Unity3DドキュメントのVector3.Reflect()メソッドへのリンクは次のとおりです。Vector3.Reflect()
この時点で、オブジェクトは衝突する新しい方向に動き始めず、跳ね返りません。衝突が発生すると、停止しているように見えます。