2

Unity とスクリプトは初めてです。2 人のプレーヤーがいて、どちらもキャラクター コントローラーを使用しています。私はこのことをしました

  • onControllerColliderHit 関数を使用しました。
  • このgameobj.nameのように名前を出力しました。
  • ヒットしたオブジェクトの名前が表示されます

しかし、問題はそれを通過することです。通過できず、剛体と同じように動作することを望みます。2番目のプレーヤーがそれを打つ力の効果があるに違いないのと同じように。

4

1 に答える 1

2

ドキュメントを確認してください。CharacterController はそのままではRigidBodyアタッチされていません:

Character Controller は、主に Rigidbody 物理を使用しない第三者または一人称のプレイヤー コントロールに使用されます。

基本的には、シーン内のキャラクターとオブジェクト間の競合を防ぐためCharacterControllerだけに設計されていますが、 2 間で衝突が発生した場合、期待どおりに動作しません。CollisorCharacterControllers

特に:

コントローラは、それ自体の力に反応せず、リジッドボディを自動的に押しのけません。

OnControllerColliderHit のドキュメントに示されているように、衝突が発生したときに手動で衝突を処理できます。たとえば、移動方向があるため、衝突したときにキャラクターコントローラーオブジェクトを互いに押し離すことができます。

Vector3 pushDir = new Vector3(hit.moveDirection.x, 0, hit.moveDirection.z);
transform.Translate (-pushDir * offset);  
于 2013-02-23T14:41:03.217 に答える