JiaChen-Zeng / PLNR-Alpha01

プランナーになろう会のαチームとしてUnity1Weeksに参加。お題は「正」。
0 stars 0 forks source link

主人公の被攻撃を簡単に実装する #43

Closed JiaChen-Zeng closed 2 years ago

JiaChen-Zeng commented 2 years ago

そういえば弾幕システムはわたしたちで実装するんでしたね。でも被攻撃の処理はシステムを変えたあとでもそのまま使えると思うので、大丈夫です。

JiaChen-Zeng commented 2 years ago

修正箇所が多いので @avinash4400 の実装を待ちます。

JiaChen-Zeng commented 2 years ago

@eiei114 が実装します。

今 DamageReceiver のコードがあるんですがこれは適当に書かれたコードです。CharacterController のその部分と、EventManager のイベント処理の部分もそうだと思います。

そして今わたしが問題だと思っているところは、弾が盾に当たっても、衝突判定されたオブジェクトはキャラというところです 。

わたしが思うには、MainCharacter にコライダーがついてるのに、その子オブジェクトの Shield にもコライダーがついていることが原因です。なので、CharacterController のコライダーについてのイベント処理機能を元のクラスから分離して、そのコライダーを新しい子オブジェクトの一つにすればできるんじゃないかなと目論んでます。

弾の衝突判定については Unity Bullet Hell のライブラリーのこの部分の関わっています。L342~347 は弾を主人公だけと衝突するようにわたしが書いたコードです。必要があれば適宜に変えてください。L351 のところでも何らかの衝突のイベント処理ができるかもしれません。

https://github.com/JiaChen-Zeng/PRNL-Alpha01/blob/main/Assets/Unity-Bullet-Hell/Scripts/Emitters/ProjectileEmitterAdvanced.cs#L342

JiaChen-Zeng commented 2 years ago

まずは構造の修正(#53)からやってください。

JiaChen-Zeng commented 2 years ago

1週間もまだやってないので、わたしがやるしかないです。

JiaChen-Zeng commented 2 years ago

@avinash4400 が書いたイベント処理部分はまったくもって無反応で使えないので恐らくほぼ全削除することになると思います。Unity Bullet Hell は Unity 内蔵当たり判定を使っていないからです。それと使い方が間違ってる気もします。

JiaChen-Zeng commented 2 years ago

主人公のオブジェクト構造をさらに変えました。GroundCollider を加えて地面とのあたり判定だけに使います。PlayerFeet という Layer も追加しました。 CharacterController ではジャンプのとき、自分にも GroundCollider にも力を加えるようにします。Shield については主人公本体と区別がつくように Rigidbody2D を付けて Kinematic にして固定させます。あとは当たってる物体がついてるコンポーネントによって本体か盾か判定すれば完成です。