Closed JiaChen-Zeng closed 2 years ago
修正箇所が多いので @avinash4400 の実装を待ちます。
@eiei114 が実装します。
今 DamageReceiver のコードがあるんですがこれは適当に書かれたコードです。CharacterController のその部分と、EventManager のイベント処理の部分もそうだと思います。
そして今わたしが問題だと思っているところは、弾が盾に当たっても、衝突判定されたオブジェクトはキャラというところです 。
わたしが思うには、MainCharacter
にコライダーがついてるのに、その子オブジェクトの Shield
にもコライダーがついていることが原因です。なので、CharacterController
のコライダーについてのイベント処理機能を元のクラスから分離して、そのコライダーを新しい子オブジェクトの一つにすればできるんじゃないかなと目論んでます。
弾の衝突判定については Unity Bullet Hell のライブラリーのこの部分の関わっています。L342~347 は弾を主人公だけと衝突するようにわたしが書いたコードです。必要があれば適宜に変えてください。L351 のところでも何らかの衝突のイベント処理ができるかもしれません。
まずは構造の修正(#53)からやってください。
1週間もまだやってないので、わたしがやるしかないです。
@avinash4400 が書いたイベント処理部分はまったくもって無反応で使えないので恐らくほぼ全削除することになると思います。Unity Bullet Hell は Unity 内蔵当たり判定を使っていないからです。それと使い方が間違ってる気もします。
主人公のオブジェクト構造をさらに変えました。GroundCollider
を加えて地面とのあたり判定だけに使います。PlayerFeet
という Layer も追加しました。 CharacterController
ではジャンプのとき、自分にも GroundCollider
にも力を加えるようにします。Shield
については主人公本体と区別がつくように Rigidbody2D
を付けて Kinematic
にして固定させます。あとは当たってる物体がついてるコンポーネントによって本体か盾か判定すれば完成です。
そういえば弾幕システムはわたしたちで実装するんでしたね。でも被攻撃の処理はシステムを変えたあとでもそのまま使えると思うので、大丈夫です。