Corgi Engine
組み込み済みAI
Legacy
Walk
Follow
Shoot on sight
AIStairsRandomizer(ランダムに階段を上り下りする)
table:AI作例
RetroBlobDash 一寸待機後ダッシュ、その後Walk
RetroBlobClimbLadders パトロールしつつ梯子があれば使う
RetroBlobFlying パスに従って往復
RetroBlobPatrolAndJump ジャンプ連打+パトロール
RetroBlobPatrolWithinBoundsUntilDetected パトロールしつつプレイヤと軸が合ったら追尾する
RetroBlobWaitJumpWalk 待機→ジャンプ→前進
RetroBlobWalkAndJump 歩きながらたまにジャンプ
RetroBlobWithAGun パトロールしつつプレイヤが射程に入ったら銃を連射
RetroBlobWithAGunBrainSwap 一定期間毎に2つのBrainを切り替える
その場で定期的にジャンプ
パトロールしつつプレイヤが射程に入ったら銃を連射
RetroCannonVertical 銃を撃つ最低限の実装
RetroGhost テレサ。AIDecisionTargetFacingAIでFlyingから即Hidingへ切り替えている
RetroRabbitBoss 入れ子のキャラクター
RetroSwordsman パトロールしつつプレイヤが射程に入ったら近距離攻撃
RetroSwordsmanWithAGun パトロールしつつプレイヤが射程に入ったら銃を連射
table:Sceane作例
Minimal/MinimalLevel 最低限のSceane例
Minimal/MinimalPerf ProximityManagerによる大規模ステージの性能改善
最小限のシーン要件
table:最低でも必要なプレハブ
GameManagers 無くても動く
GameManager 残機、FPS、ゲームオーバー時処理など
Achievement Rules 実績のロック解除や進捗状況の追加
Time Manager 時間に関するあらゆる変更(スローダウン、一時停止など)
MMSoundManager 音声関連のマネージャ
UICamera Input Managerのみ必須
Input Manager これが無いとキャラクターは動きません
GUI Manager GUIの定義、ポーズ時のGUIなど
LevelManager プレイヤのスポーン、フェード、ステージの領域定義
Regular Camera
CameraController Corgiがカメラを制御するためのコンポーネント
CinemachineCameraController Cinemachine用(?)
Level キャラクタが立つための地形。Platformsレイヤーにする
BoxCollider2D
独自のキャラクターを作成するには
エージェント
プレイ可能なキャラクター、敵、NPCなどあらゆる種類のキャラクター
table:主要なコンポーネント
CorgyController 衝突判定、基本的な動き、重力を制御。Unityの標準物理演算の代替として機能する。
Character 他のクラス全てを繋ぐ中心となるクラス。ハブ。プレイヤーかAIかの定義。
CharacterLevelBounds LevelManagerの定義に従って移動制限をかける
Health ダメージ、体力の増減、死亡を制御する
シーンにキャラクターを追加する
プレイヤー
LevelManagerにPrefabを登録する
AI、NPC
シーンに置いておく
スクリプト経由のキャラクターアクセス
LevelManager.Instance.Players[0]; // Characterコンポーネントを得る
主要なCharacterAbilities
table:CharacterAbilites
CharacterHorizontalMovement 地上を歩ける
アニメパラメタ Walking, Speed, xSpeedFacing
CharacterJump ジャンプできる
アニメパラメタ Jumping, DoubleJumping, HitTheGround, NumberOfJumpsLeft
CharacterDash 固定距離ダッシュが出来る
アニメパラメタ Dashing
AutoCorrectTrajectory 地上で斜め下にダッシュした時、横ダッシュに補正する
CharacterRun 走れる(固定で速度上昇)
アニメパラメタ Running
CharacterHandleWeapon 攻撃出来る(武器を持てる)
アニメパラメタ 持たせた武器のAnimationParametersNames設定による
武器
近接武器:MeleeWeaponコンポーネント
ダメージ領域を一瞬生成するような挙動をする
投射武器:ProjectileWeaponコンポーネント
発射する弾の定義は1種類ならMMSimpleObjectPooler、複数種ならMultipleObjectPoolerコンポーネントで行う
発射する向きを操作する場合WeaponAimコンポーネントを使う。マウスで向きを指定する場合もこれ
一度に発射する弾の数とnWayの定義はこっちで行う
弾:等速直線運動をするProjectileと、放物線運動をするThrown Objectがある
実体はMM Poolable Objectコンポーネントを付けたGameObject。これを付けておけば何でも弾に出来る
なぜか_movement = Direction * (Speed / 10) * Time.deltaTime;入力値の桁を変えている
もろもろはFuturesWeponsシーンで確認できる
table:実装済の武器関連コンポーネント CorgiEngine/Common/Script/Agents/Weapons
Weapon 武器の基底クラス
Melee Weapon 近接武器
Combo Weapon 複数の武器を登録して、順番に使用できる RetroComboSword
Projectile Weapon 投射武器
Hitscan Weapon ヒットスキャン武器 MinimalHitscanGun
Charge Weapon 複数の武器を登録して、ボタンを押した長さで切り替える MinimalChargeWeapon
Projectile 等速直線運動する弾
Thrown Object 物理挙動する弾
Bouncy Projectile 壁で反射する弾
Bomb 時限爆弾にする(弾本体にDame on Touchを付けない) MinimalGrenade
Weapon Aim 武器の向きを制御出来るようになる
Weapon Ammo マガジンとして扱うインベントリのアイテムを指定する
Weapon Auto Aim 一定範囲に入った敵を自動で狙う MinimalHitscanGun
Weapon IK UnityのIKシステム上で、武器を正しく握らせるための仕組み Soldiers
Weapon Laser Sight レーザーサイトの表示
Aim Marker Weapon Auto Aimが狙ってるオブジェクトを表示する
弾幕みたいな事は可能?
Weponの仕組みに乗せず、基本的には今までの作り方でも問題なさそうだが、以下の変更点がある
弾はTransformで動かす
ObjectPoolerで弾を作る
弾幕のトリガはAIかWeaponでやらせる
サブ武器は持てる?
Character Handle Secondary Weapon アビリティが存在するのでこれで何とかする
武器切り替えは可能?
WeaponInventoryと組み合わせた仕組みがCharacter Inventoryアビリティに存在する
MainInventoryが持ち物、WeaponInventoryが装備しているもの
キーとしてSwitchWeaponButtonも存在
インベントリシステムが面倒に感じるならアビリティを作る必要がありそう
ChangeWeapon(Weapon newWeapon, string weaponID, bool combo = false)
https://corgi-engine-docs.moremountains.com
調べる事
エフェクト(ダメージエフェクト)の出し方
HelthにMMFeedbacksをアタッチする
キーコンフィグ
画面に配置するトラップなど
背景資料集め
作ってみるもの
デコイ弾(キャラクタを武器として発射?)
標準アニメーションパラメータ
table:Characterクラスで定義しているアニメパラメタ
Grounded
Falling
Airborne
xSpeed
ySpeed
xSpeedAbsolute
ySpeedAbsolute
WorldXSpeed
WorldYSpeed
CollidingLeft
CollidingRight
CollidingBelow
CollidingAbove
Idle
Alive
FacingRight
Random
RandomConstant
Flip
ダメージ、死亡はHelthのMMFeedback
攻撃系はWepon側でパラメタ名を定義