i-school - プレイヤーに武器を持たせる

武器の素材


中世の武器パック(無料)
https://assetstore.unity.com/packages/3d/props/wea...

Asset Storeの[Weapon Free]での検索結果
https://assetstore.unity.com/publishers/37183?q=we...





https://gyazo.com/469b9b1484f518f2311efc1bc870b3db



CapsuleColliderのコンポーネントを武器のゲームオブジェクトにアタッチし、OnTriggerにチェックを入れます。
DirectionをZ-Axisに変更し、CapsuleColliderを武器の形状に合うように調整していきます。
また、新しいTagを追加します。[Weapon]という名称にし、それを武器のTagに設定します。




武器の扱い方の設計を考えて、クラスを作成する

 キャラの手に武器を持つことは出来ましたが、このままでは、この武器のゲームオブジェクトとキャラのゲームオブジェクトにはつながりはありません。
そのため、武器にも専用のクラスを用意し、キャラクターのクラス(PlayerController)を扱えるようにしておきましょう。
現在、攻撃の処理はキャラクターが扱いますので、それらに合わせて武器も一緒に処理が行えるようにするためです。
今後、攻撃力の値をキャラクターのクラスに持たせることも考えています。

 それから、構えている武器はコライダーがオンの状態です。つまり、敵と当たってしまいます。
ですが、構えているだけの武器が常に敵に当たってしまってはゲームとしては問題ですね。
キャラが攻撃を行ったタイミングでコライダーをオンにするようにし、攻撃アニメーションの間だけ、敵に対して当たり判定を取るようにした方が自然です。
それらを踏まえて新しいスクリプトを考え、プログラムを組み込んでみましょう。


<= +ボタンを押すと開きますので、自分なりの実装を行った上で確認をしてみましょう。

 作成したスクリプトは、忘れずに武器のゲームオブジェクトにアタッチし、必要なクラスやコンポーネントをアサインしておきましょう。


武器のクラスをPlayerControllerでも扱えるようにする

 WeaponControllerクラスには、コライダーのオン・オフを扱うメソッドがありますが、このままでは呼び出すことができません。
そこで、WeaponControllerクラスをPlayerControllerクラスでも扱えるように、publicの修飾子をつけて宣言フィールドで宣言しましょう。
その後、インスペクターでアサインしておきます。

パーティクルの素材


Asset Storeの[Particle Free]での検索結果
https://assetstore.unity.com/publishers/37183?q=Pa...