αエネミーの実装(大タスク)
Description
エネミーのスプレッドシート(3/4更新のもの)
上記スプレッドシートのタブにあるエネミー全部を実装する(ボーナスエネミーに関しては未実装でOKです。別課題化します)
エネミーごとにsub-issueを作ろう
エネミーの数が多いので、エネミー個別に sub issueをここに追加しながらやってもらえるといいと思います。
エネミーファイル
以下のディレクトリに配置します(あるいはすでにファイルだけある)
packages/shared/src/master-data/enemies/
参考データ
スライム
packages/shared/src/master-data/enemies/slime.ts
画像
ImageAssetPathに使える画像のpathが指定されています。
どのエネミーにどの画像を使うのかは、晟七さんがスプレッドシートに記述してくれる予定です。(2月27日の夕方にやってくれると思います)
画像自体はCDN(Amazon S3)にuploadされています。Cyberduckでファイルを確認できます。
接続情報は shared/scripts/asset-codegen.ts の R2_CONFIG を参照してください
既存ファイル
すでにenemiesには多数のエネミーデータがありますが、中身はほぼ同一で設定がされてないです。
作ろうとしているエネミーのファイルがすでにある場合はそちらを編集してください。
設定すべき項目
- id
- name
- battleDataのhpやdefenseなどのグレード値(A~E)
- iconPath .. 指定ファイルの idel.png にしてください
- normalAttack
- skill1,2(あれば)
- motions .. 大体、idle.png / run.png / attack.png を指定することになると思います。
おそらく手間のかかる項目
攻撃の手法として、projectileParams という「弾」を飛ばすパラメータを設定する必要があります。
これは、射撃だけでなく近接攻撃もこの弾を生成することで攻撃をしています。
参考(弾仕様書)
https://docs.google.com/spreadsheets/d/1A1o_rSUQxID7ovBmyMW4RGJDU4f6YpPq9UAL5RlKydE/edit?gid=0#gid=0
弾のヒント
speedを0にすることで、弾が飛ばずに出現します。これを使うと近接攻撃になります
speedを1~16など指定すると、弾が飛びます。射撃攻撃になります。
friendlyというパラメータがtrueになるとプレイヤー側にあたります。falseになるとエネミー側に当たると言う仕様です。エネミーパラメータのfriendlyをfalseにしてもエネミーに当たります。どっちチームとか関係なしです。
isPassThroughBarrier バリアを貫通するかどうかとなります。貫通するとバリアに当たらずバリア内のキャラクター(altaなど)に直接当たります。バリアが壊せない弾になります。
これをプレイヤー側の後衛キャラクターは必ずtrueにしてます(そうしないと味方の攻撃でバリアが壊れる)
size 飛ぶ弾の大きさです
collision.radius 弾の当たり判定の半径です
inFlightMotion 飛んでく弾のアニメーションです
onHit 弾が当たった後の処理が描かれます effectIdがdamageでparams.amountが100なら当たったら100%威力のダメージになります。
range 射程です。この距離内に攻撃対象がいる場合にこのスキルを使います
positionOffset 弾の発生位置です。近接攻撃の場合はxを50くらいにしてキャラの手前にでるようにします。
TICKS_PER_SECOND 60です。1秒と考えてOKです。(1秒を60ティックとしています。)
このゲームの特徴
属性付着という仕様があります。
例えば、水属性で攻撃すると対象に水属性が付着します。
その状態になると、「濡れ」という状態異常をあたえるのと、水属性付着している相手に雷属性で攻撃すると「感電」という属性反応(連携効果)が発生します。