のぼるゲーム開発備忘録

ゲーム開発のプログラマーです。ゲーム開発関連、調べた内容をアップしていきます。Unityを使用して個人開発を行っています。

【Unity】【AssetStore】ナイトモデル紹介

f:id:ikeball:20210126233228p:plain

はじめに

近接攻撃の処理を作ってみたく、ストアで探してモーション数も豊富なCasual Warrior Packを購入しました。モーション数は77が多く、2.5Dアクションゲームの作成にもそのまま使えそうです。盾でガード、パリィなどのモーションも入っています。

入っているモーションを全て確認しそれぞれの動画を用意しました。

※横歩き専用モーションは入っておりませんでした。代用できそうなモーションはありますので、3Dアクションゲームを作成の場合は、用意されているモーションをよーーくチェックの上購入判断お願いします。

確認環境

Unity 2019.4.16f1

デモシーン

基本的な動きを確認できるデモが用意されていました。

※床、壁、スカイボックスのマテリアルは映えるように設定しなおしています。

Example_Platformer

ジャンプ、壁つかまり、二段ジャンプ、スライディングのデモです。

f:id:ikeball:20210127004438g:plain

Example_AttackCombo

コンボ攻撃のデモです。

f:id:ikeball:20210127011638g:plain

LitModel

ライトの影響を受ける、受けないモデルの比較デモです。

f:id:ikeball:20210126234053g:plain

f:id:ikeball:20210127220755p:plain

モーション

AnimationList

Attack1...攻撃1

f:id:ikeball:20210127222037g:plain

Attack2...攻撃2

f:id:ikeball:20210127222207g:plain

Attack3...攻撃3回転切り

f:id:ikeball:20210127222333g:plain

Attack4...攻撃4突き

f:id:ikeball:20210127222508g:plain

Attack5...攻撃5両手切り

f:id:ikeball:20210127222637g:plain

Skill1...スキル1飛び切り

f:id:ikeball:20210127222818g:plain

Skill2...スキル2両手切り

f:id:ikeball:20210127223129g:plain

Skill3...スキル3切り上げ

f:id:ikeball:20210127223327g:plain

Skill4...スキル4打ち上げ

f:id:ikeball:20210127223553g:plain

Skill5...スキル5飛びつき突き

f:id:ikeball:20210127223725g:plain

ShieldAttack1...盾攻撃1

f:id:ikeball:20210127224036g:plain

ShieldAttack2...盾攻撃2盾弾き

f:id:ikeball:20210127224205g:plain

ShieldAttack3盾攻撃3押し込み

f:id:ikeball:20210127225047g:plain

ShieldBlock_In/Out / ShieldBlock_Wait / Damage...盾防御

f:id:ikeball:20210127225437g:plain

ShieldBlock_Attack...盾防御反撃

f:id:ikeball:20210127225654g:plain

ShieldBlock_Parying / ShieldBlock_ParryingAttack...パリィ→攻撃

f:id:ikeball:20210127232045g:plain

ShieldBlock_Walk...盾構え歩き

f:id:ikeball:20210127232313g:plain

ShieldBlock_Run...盾構え走り

f:id:ikeball:20210127232510g:plain

Kick1...蹴り

f:id:ikeball:20210127232635g:plain

Kick2...蹴り上げ

f:id:ikeball:20210127233623g:plain

Damage_Air_In / Damage_Air_Out ... 空中ダメージイン/アウト

f:id:ikeball:20210127234137g:plain

Damage_AirHit1...空中ダメージ

f:id:ikeball:20210127234324g:plain

Damage_AirHit2...空中ダメージ → 落下

f:id:ikeball:20210127234449g:plain

Damage_Weak...小ダメージ

f:id:ikeball:20210127234652g:plain

Damage_Strong...大ダメージ

f:id:ikeball:20210127234827g:plain

Damage_Down / Damage_DownHit / Damage_Rise...ダウン、起き上がり

f:id:ikeball:20210127234956g:plain

Damage_Stun...気絶

f:id:ikeball:20210127235222g:plain

Death...やられた

f:id:ikeball:20210127235407g:plain

Buff1...バフモーション1

f:id:ikeball:20210127235927g:plain

Buff2...バフモーション2

f:id:ikeball:20210128000115g:plain

Buff3(Buff2よりアニメーション時間が長い)...バフモーション3

f:id:ikeball:20210128000235g:plain

JumpAttack1 / JumpAttack2...空中攻撃1 → 空中攻撃2

f:id:ikeball:20210128223754g:plain

JumpAttack3_In / JumpAttack3_Out...空中落下攻撃イン/アウト

f:id:ikeball:20210128223918g:plain

JumpAttack4...ジャンプ攻撃

f:id:ikeball:20210128224321g:plain

nidle1...構え無し待機

f:id:ikeball:20210128224525g:plain

nidle2...構え無し待機振り向き

f:id:ikeball:20210128224811g:plain

nWalk_F...構え無し歩き

f:id:ikeball:20210128225035g:plain

nWalk_B...構え無し後ろ歩き

f:id:ikeball:20210128225227g:plain

nRun_F...構え無しは知り

f:id:ikeball:20210128225342g:plain

nRun_B...構え無しバック走り

f:id:ikeball:20210128225511g:plain

nRun_Fast...構え無し高速ダッシュ

f:id:ikeball:20210128230228g:plain

Sheathe / UnSheathe...武器を構える/武器をしまう

f:id:ikeball:20210128230824g:plain

Idle1...武器構え有 待機

f:id:ikeball:20210128231004g:plain

Walk_F...武器構え有 歩き

f:id:ikeball:20210128231122g:plain

Walk_B...武器構え有 後ろ歩き

f:id:ikeball:20210128231233g:plain

Run_F...武器構え有走り

f:id:ikeball:20210128231402g:plain

Run_B...武器構え有 後ろ走り

f:id:ikeball:20210128231520g:plain

RunFast...武器構え有 高速ダッシュ

f:id:ikeball:20210128231705g:plain

Dash_F...前方ダッシュ

f:id:ikeball:20210128231818g:plain

Dash_B...後方ダッシュ

f:id:ikeball:20210128232433g:plain

Roling...ローリング

f:id:ikeball:20210128232545g:plain

BackRoling...バック転

f:id:ikeball:20210128232657g:plain

Jump_In / Jump_Out...ジャンプイン/アウト

f:id:ikeball:20210128233418g:plain

AnimationAdd

Sit...座り

f:id:ikeball:20210128235244g:plain

Sliding...スライディング

f:id:ikeball:20210128235358g:plain

Turn_Left, Right...振り向き左/右

f:id:ikeball:20210128235917g:plain

OnWall...壁張り付き

f:id:ikeball:20210129000318g:plain

Jump_Spin...空中回転

f:id:ikeball:20210129000540g:plain

Talking1...会話

f:id:ikeball:20210129000729g:plain

Talking2...会話2

f:id:ikeball:20210129000942g:plain

Talking3...会話3

f:id:ikeball:20210129001133g:plain

nJump...武器構え無し ジャンプ

f:id:ikeball:20210128234942g:plain

関連アセット紹介

【Unity】【AssetStore】アーチャーモデル紹介

ikeball.hatenablog.com

【Unity】【AssetStore】モンスターモデル紹介

ikeball.hatenablog.com

ATART Casual Archer Pack

アーチャーモデルも用意されています。

ATART MonsterPack Vol.1: Slime, Goblin, Mimic Book

モンスターセットが用意されていました。

ATART Monster Boar

Vol.1セットには入っていないモンスターです。

ATART Monster Slime

Vol.1セットに入っているスライムです。

ATART Monster MimicBook

Vol.1セットに入っている本のモンスターです。

ATART Monster Goblin

Vol.1セットに入っているゴブリンです。

おわりに

用意されているモーションが豊富でアクションゲームの作成で活躍できるアセットだと感じています。さっそくCorgi Engine のモデルを差し替えて、近接攻撃に挑戦してみたいと思います。

【Unity】【Corgi Engine】サウンドの設定(BGM / SE)

f:id:ikeball:20210117122534p:plain

はじめに

Corgi Engineでどのようにサウンドの再生について記載しました。BGMの置き換え、SEの置き換え、新規SEの入れ込みについてまとめています。SEの再生にはCorgiEngineでFeedbackという仕組みを使用していました。Feedbackの理解が進むとCorgi Engineで色々なことができるようになりそうです。

使用アセット

Corgi Engine - 2D + 2.5D Platformer

Game Music Pack - SUITE

良質なBGMが多く含まれています。ジングルも入っています。

作業環境

Unity 2019.4.16f1

BGM再生方法

Assets/CorgiEngine/Demos/Corgi3D/NewCorgi3Dのシーンで確認しました。

f:id:ikeball:20210124212502p:plain

BackgroundMusic/BackgroundMusicがBGMの再生を管理しているオブジェクトでした。

f:id:ikeball:20210124212222p:plain

 BackgroundMusic

InitializationTime ... スクリプト起動時にTime.timeが代入されます。設定は必要ありません。

SoundClip ... 再生するサウンドの設定。

BGMの置き換え

①BackgroundMusicをクリック

②設定したいサウンドファイルをBackgroundMusic/SoundClipにドラッグで設定する。

※ここではGame Music Pack - SUITEcasual_04_loopの音を設定しました。

この操作で置き換えは完了となります。実行して確認してみてください。

f:id:ikeball:20210125205503p:plain

BGMを外す

 BGMを鳴らしたくない場合は、BackgroundMusic/SoundClipを未設定にすれば対応ができました。

f:id:ikeball:20210125205920p:plain

SE再生方法

確認したところ、CorgiEngineでのSEの再生はFeedbackという仕組みで設定が行われています。Feedbackは「キャラクターがジャンプした時」「攻撃した時」等、何かの入力に対して行う仕組みです。ありとあらゆるフィードバックが用意されています。

このFeedbackの中にサウンドを鳴らす処理が存在します。

↓下の画像全部フィードバックに対するスクリプトで、設定することが出来ます。

f:id:ikeball:20210125222657p:plain

Feedbackに関する公式ドキュメント

Feedback | Corgi Engine Documentation

デモ設定の確認

デモ用に用意されているNewCorgi3Dの設定で確認しました。

Assets/CorgiEngine/Demos/Corgi3D/Prefabs/PlayableCharacters/NewCorgi3D

f:id:ikeball:20210125224435p:plain

様々なフィードバックが設定されていますが例として、DeathFeedbacksはキャラクターがダウンした際に呼び出されるように設定されています。

(DeathFeedbacksはNewCorgi3D/Health/DeathFeedbacksに設定されています)

MMFeedbacksAdd new feedback...から追加できるフィードバックの内容を確認できます。

f:id:ikeball:20210125231432p:plain

サウンド関連のフィードバックはそれなりにありますが、下記二つの使い方を把握すればSEの再生に関してやっていけそうです。

・Audio/Sound → MMFeedbackSound

・Sounds/Corgi Engine Sound → MMFeedbackCorgiEngineSound

f:id:ikeball:20210125230817p:plain

MMFeedbackCorgiEngineSound

JumpFeedback/CorgiEngineSoundについて確認しました。

コーギーエンジン用に作成されたサウンドのフィードバックです。

f:id:ikeball:20210125225049p:plain

Active
 このフィードバックが有効かどうか。

Label
 インスペクタに表示するこのフィードバックの名前。

 f:id:ikeball:20210125234426p:plain

Chance
 このフィードバックが起こる確率(パーセント表示)

 100:常に起こる、50:2回の呼び出しに1回起こる、0:発生しない。

TimescaleMode
 タイムスケールの影響を受けるかどうか。

InitialDelay
 再生するまでの待ち時間(秒単位)。

CooldownDuration
 次の再生までのクールダウン時間。この時間の間にフィードバックが発生しても再生しない。

NumberOfRepeats

 繰り返す回数。再生終了待ちする訳ではなく、DelayBetweenRepeatsの時間後に再生します。

 1:通常1回分と、繰り返し1回分で2回再生されます。

 2:通常1回分と、繰り返し2回分で3回再生されます。
RepeatForever
 trueの場合、このフィードバックは無限に繰り返される。

DelayBetweenRepeats
 リピート間の待機時間(秒単位)。

Sequence、TrackID、Quantized、TargetBPM 

 用途が良く分からず。。

SoundFX

 再生するサウンド
Loop

 trueの場合、この音をループで再生する。再生終了待ちをして再生します。

MMFeedbackSound

DamageFeedback/Soundについて確認しました。

MoreMountainsで用意されているサウンドのフィードバックです。

Inspector上でサウンドを確認するボタンが付いています。

f:id:ikeball:20210125225551p:plain

Active~TimingのパラメータはMMFeedbackCorgiEngineSoundと同じです。

AudioClip

 再生するサウンドクリップ。

RandomSfx

 ランダムなサウンドを再生する場合の設定。

TestPlaySound

 テストサウンド再生。
TestStopSound
 テストサウンド停止。

PlayMethod

 サウンドの再生方法

 ・Event: MMSfxEvent を送信し、サウンドを再生します。
 ・Cached : あらかじめサウンドを再生するためのオーディオソースを作成して保存します。
 ・OnDemand : サウンドを再生するためのオーディオソースを作成して再生します。
 ・Pool:あらかじめオブジェクトを用意し、再生していないオーディオから再生します。

MinVolume

  再生するサウンドの最小音量。再生時にMinVolume~MaxVolumeの間で音量が決められます。

MaxVolume

 再生するサウンドの最大音量。再生時にMinVolume~MaxVolumeの間で音量が決められます。
MinPitch

  再生するサウンドの最小音程。再生時にMinPitch~MaxPitchの間で音程が決められます。

MaxPitch

  再生するサウンドの最大音程。再生時にMinPitch~MaxPitchの間で音程が決められます。

SfxAudioMixerGroup

 オーディオミキサーを使ってサウンドを再生を行う場合設定。

既存SEの置き換え

対象のFeedbackオブジェクトが存在しますので、場所を特定しAudioClipを更新します。

デモキャラ NewCorgi3Dの場合

Assets/CorgiEngine/Demos/Corgi3D/Prefabs/PlayableCharacters

のプレハブを確認するとFeedbacksというオブジェクトが存在し、その下に各フィードバック用のオブジェクトが配置されています。フィードバック用のオブジェクトは作成しただけでは何もおきずAbility等の呼び出し元に設定することで機能します。NewCorgi3Dのトップノードに設定が行われています。

f:id:ikeball:20210126082849p:plain

オブジェクト名 呼ばれるタイミング 設定もと

DeathFeedbacks

体力が0になった

Health

DamageFeeedbacs

ダメージを受けた

Health

JumpFeedback

ジャンプした CharacterJump

RumFeedbacks

 走っている CharacterRun

TouchTheGroundFeedbacks

着地した

CharacterHorizontalMovement

WalkFeedbacks

歩いている

CharacterHorizontalMovement

JumpAirFeedbacks

 空中ジャンプした CharacterJump

DashFeedbacks

ダッシュした CharacterDash

WallClingingFeedbacks

壁につかまっている CharacterWallcilinging

WallJumpFeedbacks

壁からジャンプした CharacterWalljump

※Feedbackを設定する場所は全てNewCorgi3Dのトップノードに行われていました。 

f:id:ikeball:20210126084055p:plain

TouchTheGroundFeedbacks, WalkFeedbacksはNewCorgi3DのCharacterHorizontalMovementに設定されています。

新規SEの設定

SEの新規設定の手順では、ダッシュ停止時に、SEを鳴らす処理を紹介します。

NewCorgi3Dプレハブのコンポーネント下の方にCharacterDashが付加されています。

・Character Dash/AbilityStartFeedbacks ダッシュ開始時のフィードバック

・Character Dash/AbilityStopFeedbacks ダッシュ停止時のフィードバック

AbilityStopFeedbacksに設定を行ってみます。

f:id:ikeball:20210126093224p:plain

①Feedbacksのところで、マウス右クリック「Create Empty」を選択します。

f:id:ikeball:20210126092936p:plain

②名前をDashStopFeedbacksに変更しました。

 (名前の変更は対象のオブジェクトを選択し、F2で行えます)

f:id:ikeball:20210126093749p:plain

③Add Componentをクリックし、検索欄にfeedと入力、MMFeedbacksを選択します。

f:id:ikeball:20210126094034p:plain

④Add new feedback...から「Sounds/Corgi Engine Sound」を追加します。

※Audio/Soundの方でも問題ありません。使いやすい方を使用します。

f:id:ikeball:20210126094319p:plain

サウンドの設定

 Assets/CorgiEngine/Demos/Corgi3D/Sounds/Corgi3DJump3 を

CorgiEngineSound/SoundFX にドラッグアンドロップで設定します。

f:id:ikeball:20210126134211p:plain

④最後に作成したフィードバックオブジェクトが呼び出されるように設定します。

NewCorgi3Dを選択し、Inspectorで下の方にあるCharacterDashまでスクロールします。

今回用意したDashStopFeedbacksを、AbilityTopFeedbacksにドラッグアンドドロップで設定します。

f:id:ikeball:20210126134942p:plain

プレハブを保存してください。

Ctrl + Sで保存ができます。

これにて設定完了となります。

実行して動作を確認してみてください。

デフォルト操作でのダッシュはFキーになっています。

ダッシュ後に「ふぁっ」っというSEが再生されるようになっています。

f:id:ikeball:20210126135504g:plain

(この動画では音が伝えられず、、、)

 

キャラクターに限らず、武器やイベントにもFeedbacksが付いていますので、同じような手順で、SEの追加を行うことができます。

説明は以上となります。

おわりに

 ここまで確認頂きありがとう御座いました。

思いのほかFeedbackの処理も確認することになりましたがCorgiEngineでのできることが広がったことが感じられました。

今後も記事アップしていきたいと思います。

関連記事

ikeball.hatenablog.com

【Unity】【Corgi Engine】オリジナル武器の作成①銃の設定調査

f:id:ikeball:20210124144015p:plain

はじめに

CorgiEngineの武器処理は奥が深いです。それでも好きな弾道で発射できるようしたく調査しています。調査項目が多いため何回かの記事に分けてまとめています。今回は銃の設定についてまとめました。

使用アセット

Corgi Engine - 2D + 2.5D Platformer

作業環境

Unity 2019.4.16f1

公式ドキュメントの場所(英語)

Weapons | Corgi Engine Documentation

デモの構成確認

プレイヤーが初期装備をしているデモCorgi3DxTheHuntで武器の扱いを確認しました。

Assets/CorgiEngine/Demos/Corgi3D/Corgi3DxTheHunt

f:id:ikeball:20210122065402p:plain

装備している武器はマウスクリックで発射します。

f:id:ikeball:20210122082131g:plain

このプレイヤーはSoldier3DRedというプレハブで

Assets/CorgiEngine/Demos/TheHunt/Prefabs/PlayableCharactersにあります。

f:id:ikeball:20210122082312p:plain

Soldier3DRed のプレハブを開き、ノードトップを選択しInspectorを下にスクロールし、Character Handle WeaponのパラメータWeapon/Initial Weaponが初期装備のプレハブになります。 

f:id:ikeball:20210122083241p:plain

Character Handle Weapon

スクリプトのパラメータですがとても数が多いです。確認して分かるくらいで、覚える必要はないと感じています。

Permissions

CharacterAbility共通のパラメータ、条件を満たしたときに武器が持てるようになる等の場合に変更します。

Ability Permitted

 true このアビリティは有効。false このアビリティは無効。
Blocking Movement States

 特定の行動状態でアビリティを無効化する場合に設定します。ジャンプ中は攻撃できないようにする場合は、この配列にジャンプ状態を設定します。
Blocking Condition States

 特定ステータス状態でアビリティを無効化する場合に設定します。死亡状態の場合に攻撃できないようにする場合は、この配列に死亡状態を設定します。

Weapon

初期装備は空にして拾って装備するといった事もできます。落ちている装備を拾えないキャラの実装も可能です。

Initial Weapon

 初期装備武器
Can Pickup Weapons

 落ちている装備を拾えるかどうか

Binding

Weapon Attachment

 武器が取り付けられる位置を指定します。空の場合はこのスクリプトが付いているオブジェクトが対象
Force Weapon Scale Reset On Equip

 trueの場合、装備時に武器のScaleを1,1,1,1にする。小さく配置していた武器を元のサイズに戻す場合などに使用します。
Automatically Bind Animator

 trueの場合、このアニメーターは自動的に武器にバインドされます。
Ammo Display ID

 UIの更新対象となる関連番号を設定します。

ContinuousPress

 trueの場合、押しっぱなしでも自動リロードされます。
Getting Hit Interrupts Attack

 ダメージを受けた際に攻撃を中断するかどうか (装備武器のInterruptableがtrueの場合有効)
Can Shoot From Ladders

 梯子に登ってる際に攻撃できるか
Face Weapon Direction

 trueの場合、キャラクターは現在の武器の方向を強制的に向くようになります。

Buffering

Buffer Input

 攻撃入力をバッファリングするかどうかを指定することで、別の攻撃が実行されている間に攻撃を準備できるようにし、コンボしやすくできます。
New Input Extends Buffer

 trueの場合、新しい入力があるたびに受付時間が延びます。
Maximum Buffer Duration

 バッファの最大持続時間を秒単位で指定します。

Debug

Current Weapon

 現在装備されている武器

Feedbacks

Ability Start Feedbacks

 使用時のフィードバック
Ability Stop Feedbacks

 停止時のフィードバック

SoldierMachineGun

武器プレハブSoldierMachineGunを確認しました。

Assets/CorgiEngine/Demos/TheHunt/Prefabs/Weapons/SoldierMachineGun

f:id:ikeball:20210123045226p:plain

SoldierMachineGunプレハブの構成

SoldierMachineGun ... トップノード。主要なスクリプトはここに設定されている。

LeftHandHandle ... 左手位置

MachineGunShells ... 薬莢パーティクル

MachineGunFlames ... ノズルファイヤ(玉発射時にノズルに出るエフェクト)

MachineGunModel ... 銃のモデル

RightHandHandle ... 右手位置

WeaponStartFeedback ... 発射時のフィードバック。SEが設定されている。

WeaponUsedFeedback ... 使用中のフィードバック。SE, Flash, Bloom, Particle様々設定されている。

WeaponStopFeedback ... 停止時のフィードバック。SEが設定されている。

f:id:ikeball:20210123050004p:plain

SoldierMachineGunプレハブのスクリプト

4つのスクリプトが設定されています。

武器の発射間隔や装弾数に関わる重要なところなので詳しく調査しました。

f:id:ikeball:20210123051953p:plain

変更前の動き

f:id:ikeball:20210123064612g:plain

Projecttile Weapon

General Settings

f:id:ikeball:20210123064510p:plain

Trigger Mode

 Auto ボタン押しっぱなしで打ち続ける

 Semi Auto ボタン1度につき一発発射

DelayBeforeUse

 Trigger ModeがAutoの時専用(Semi Autoでは弾が出なくなります)ボタンを押し続けていると、この時間待ってから発射されるようになる。

DelayBeforeUseReleaseInterruption

 trueの場合、ボタンを離すとディレイ時間がクリアされます。falseの場合、ボタンを離しても合計押時間が越えたら弾が発射されるようになります。
TimeBetweenUses

 Auto発射時の発射間隔。Semi Autoの場合連打するとこの時間以下でも発射できます。
TimeBetweenUsesReleaseInterruption

 trueの場合、ボタンを離すと発射間隔時間がクリアされます。falseの場合、ボタンを離しても合計発射間隔時間が越えたら弾が発射されるようになります。
Interruptable

 ダメージを受けた際に攻撃が中断されるかどうか。CharacterHandleWeapon 側のGettingHitInterruptsAttackもtrueになっている場合有効になる。
InitializeOnStart

 trueの場合、武器の起動時に自身で初期化を呼び出すか。設定しない場合、CharacterHandleWeaponクラス等から手動で初期化する必要があります。とあるのですが特に設定しなくても大丈夫そう?

f:id:ikeball:20210123064953g:plain

・Trigger Mode = Semi Auto、ボタンを押すたびに一発発射

f:id:ikeball:20210123070400g:plain

・Trigger Mode = Auto, Time Between Used = 0.05の設定、押しっぱなし

Magazine

f:id:ikeball:20210123115939p:plain

マガジン設定を行うと、一定の発射ごとに弾の詰め直しが必要になります。

MagazineBased

 この武器がマガジンタイプの武器であるか。falseの場合、弾薬はグローバルプールで管理されます。

MagazineSize

 マガジン容量です。

AutoReload

 自動でリロードが行われるかどうか。デフォルトのリロードキーは「R」です。

ReloadTime

 リロードにかかる時間です。

AmmoConsumedPerShot

 1発射ごとに消費される弾数です。

AutoDestroyWhenEmpty

 trueの場合、弾薬が空になった場合武器が自動で破壊されます。

装備インベントリ内含め、弾薬0の状態で破棄されます。弾薬が無限設定の場合は破棄されることはありません。

AutoDestroyWhenEmptyDelay

 AutoDestroyWhenEmptyで破棄されるまでの遅延時間です。

CurrentAmmoLoaded

 現在、装填されている弾数です。

f:id:ikeball:20210123122137g:plain

Magazine Based = true, Magazine Size = 2, Auto Reload = true,
Reload Time = 1, Ammo Cuonsumed Per Shot = 1、発射ボタン連打

Position

f:id:ikeball:20210123122741p:plain

WeaponAttachmentOffset

 モデル表示位置を修正する値です。

FlipWeaponOnCharacterFlip

 キャラクターの判定に合わせて、武器のモデルも反転するかどうか。

FlipValue

 反転時にモデルのtransformのローカルスケールに乗算するため値。通常は -1,1,1,1 ですが、モデルの仕様に合わせて自由に変更できます。

f:id:ikeball:20210123123342g:plain

WeaponAttachmentOffset のyの値を上げて、弾を発射

f:id:ikeball:20210123123741g:plain

FlipWeaponOnCharacterFlip = false

Hands Positions

f:id:ikeball:20210123123938p:plain

LeftHandHandle

 左手を付ける場所

RightHandHandle

 右手を付ける場所

Movement

f:id:ikeball:20210123135632p:plain

ModifyMovementWhileEquipped

 これがtrueの場合、武器が装備されている間の移動力に倍率が適用されます。

PermanentMovementMultiplier

 ModifyMovementWhileEquippedをtrueにすると表示される。

 装備している間の移動力に適用される乗数。

 例として0:装備中は移動ができない。

  0.5:装備中は移動力が半分

  2:装備中は移動力が倍

ModifyMovementWhileAttacking

 これがtrueの場合、武器で攻撃中の移動力に倍率が適用されます。

MovementMultiplier

 ModifyMovementWhileAttackingをtrueにすると表示される。

 攻撃中の移動力に適用される乗数。

PreventHorizontalMovementWhileInUse

 trueの場合、武器で攻撃中の間、横方向の移動が全て無効化されます。

SetForceWhileInUse

 これがtrueの場合、武器で攻撃中の設定された力を受けます。

ForceWhileInUse

 SetForceWhileUseをtrueにすると表示される。

 武器で攻撃中の間受ける力を設定する。

f:id:ikeball:20210123162511g:plain

ModifyMovementWhileAttacking = true, MovementMultiplier = 0.2、右入れっぱなし

f:id:ikeball:20210123162930g:plain

PreventHorizontalMovementWhileInUse = true、右左右と攻撃

f:id:ikeball:20210123163716g:plain

設定変更無のジャンプ攻撃

f:id:ikeball:20210123163831g:plain

SetForceWhileInUse = true, ForceWhileInUse x = 0/y = 0、ジャンプ攻撃

f:id:ikeball:20210123164121g:plain

SetForceWhileInUse = true, ForceWhileInUse x = 0/y = 2、ジャンプ攻撃

f:id:ikeball:20210123164350g:plain

SetForceWhileInUse = true, ForceWhileInUse x = 0/y = 5、攻撃

Animation

f:id:ikeball:20210123141020p:plain

Animators

 この武器が使用されるたびに更新したい他のアニメーター(キャラクター以外の)を設定します。武器の発射タイミングで武器がアニメーションさせる場合など設定を行います。

Animation Parameters Names

f:id:ikeball:20210123141042p:plain

EquippedAnimationParameter

 アニメーションパラメータの名前。この武器が装備されている限り、設定したアニメーターのパラメータをtrueにします。これパラメータ以外はWeaponクラスで更新されますが、このパラメータのみCharacterHandleWeaponで更新が行われます。

IdleAnimationParameter

 アニメーションパラメータの名前。武器を使用していない時true。

StartAnimationParameter

 アニメーションパラメータの名前。武器の使用開始フレームでtrue。

DelayBeforeUseAnimationParameter

 アニメーションパラメータの名前:武器が発射態勢から発射されるまでの間true。

SingleUseAnimationParameter

 アニメーションパラメータの名前: 武器が有効になる(撃つ)各フレームでtrue。

UseAnimationParameter

 アニメーションパラメータの名前:弾を発射してから待機に戻るまでtrue。

DelayBetweenUsesAnimationParameter

 アニメーションパラメータの名前:弾を発射してから待機に戻る際に、武器が使用中の場合true。

StopAnimationParameter

 アニメーションパラメータの名前:弾を発射後、次の発射までの間と、武器使用停止時にtrue。

ReloadStartAnimationParameter

 アニメーションパラメータの名前:武器リロード開始時にtrue。

ReloadAnimationParameter

 アニメーションパラメータの名前:武器リロード中にtrue。

ReloadStopAnimationParameter

 アニメーションパラメータの名前:武器のリロード終了時にtrue。

WeaponAngleAnimationParameter

 アニメーションパラメータの名前:武器の角度。

WeaponAngleRelativeAnimationParameter

 アニメーションパラメータの名前:キャラクターの向きに補正された武器の角度。

Feedbacks

f:id:ikeball:20210123141104p:plain

弾発射時のエフェクトやSE

WeaponStartMMFeedback

 プレイフィードバック:武器の使用開始時

WeaponUsedMMFeedback

 プレイフィードバック:武器使用中

WeaponStopMMFeedback

 プレイフィードバック:武器の使用停止時

WeaponReloadMMFeedback

 プレイフィードバック:武器がリロードされた時

WeaponReloadNeededMMFeedback

 プレイフィードバック:武器がリロードが必要になった時

WeaponOnHitFeedback

 プレイフィードバック:武器が何かに当たった時

WeaponOnMissFeedback

 プレイフィードバック:武器がミスした時(ミスをする武器か、サブクラスごとに設定されている)

WeaponOnHitDamageableFeedback

 プレイフィードバック:ダメージを与えられる武器が当たった時

WeaponOnHitNonDamageableFeedback

 プレイフィードバック:武器がダメージを与えられないものに当たった時

WeaponOnKillFeedback

 プレイフィードバック:武器で誰かを倒した時

Recoil

f:id:ikeball:20210123141125p:plain

ApplyRecoilOnUse

 武器発射時の反動を使用するか。

RecoilOnUseProperties

 ApplyRecoilOnUseをtrueにすると表示される。

 この武器が使われるたびに適用される反動の設定。

 ・Recoil Force Grounded ... 陸にいるときの反動値

 ・Recoil Force Airbome ... 空にいるときの反動値

 ・Recoil Style ... 力のかけ方、加算か代入か

 ・Delay ... 反動の力を受けるまでの待ち時間

 ・Recoil Feedback ... 反動時のフィードバック

ApplyRecoilOnMiss

 武器がミスした時の反動を使用するか。

RecoilOnMissProperties

 ApplyRecoilOnMissをtrueにすると表示される。

 RecoilOnUsePropertiesと同じ。

f:id:ikeball:20210124100909g:plain

ApplyRecoilOnUse = true、攻撃

Projectile Spawn

f:id:ikeball:20210123141146p:plain

ProjectileSpawnTransform

 弾発射位置の基準点として使用するオブジェクト。設定がない場合は武器のトップノードになる。

ProjectileSpawnOffset

 弾を出すオフセット位置。

ProjectilesPerShot

 発射する弾の数。

Spread

 発射する際にばらける角度。

RotateWeaponOnSpread

 発射する角度に合わせて武器を回転させるかどうか。

RandomSpread

 Spreadの拡散をランダムにおこなうかどうか。

SpawnPosition

 確認用。弾を発射するローカル位置。

f:id:ikeball:20210124103016g:plain

ProjectilesPerShot = 3, RandomSpread = false、Spread z = 45、攻撃

f:id:ikeball:20210124103411g:plain

ProjectilesPerShot = 9, RandomSpread = false、Spread z = 180、攻撃

f:id:ikeball:20210124103924g:plain

ProjectilesPerShot = 5, RandomSpread = true、Spread z = 30、上攻撃

Weapon Aim

f:id:ikeball:20210123141218p:plain

AimControl

 エイムの操作方法

 ・Off:制御なし

 ・Primary Movement:一次動作(通常は左スティック)

 ・Secondary Movement:二次動作(右スティック)

 ・Mouse:マウス

 ・スクリプトスクリプトで制御。自作操作システムを作る場合、AIの場合。

RotationMode

 スティック入力でのエイム角度の制限(Mouseモードでは無効)

 ・Free:制限無し

 ・Strict4Directions:4方向限定

 ・Strict8Directions:8方向限定

WeaponRotationSpeed

 武器が新しい入力角度に到達するまでの速度を指定。入力に直接追従した動きをしたい場合は0を設定します。
MinimumAngle

 制限角の下限。これより下の角度はエイムできない。

MaximumAngle

 制限角の上限。これより上の角度はエイムできない。

Reticle

 狙いのレチクル/十字線として表示するゲームオブジェクトを指定します。レチクルを表示したくない場合は空のままにする。

f:id:ikeball:20210124133900p:plain

DisplayReticle

 falseに設定されている場合、レチクルは追加されず表示しない。

ReticleDistance

 レクチルの表示距離。

ReticleAtMousePosition

 trueの場合、レチクルはマウスの位置に配置する。AimControlがMouseの時有効。

RotateReticle

 trueの場合、レチクルは武器の回転に合わせて回転します。

ReplaceMousePointer

 trueの場合、Gameビュー上のマウスカーソルの表示はレチクルに置き換わります。

DisableReticleOnDeath

 破棄時にレチクルを隠すか。

f:id:ikeball:20210124105134g:plain

AimControl = Mouse、マウスで一回転攻撃

f:id:ikeball:20210124110159g:plain

WeaponRotationSpeed = 1、上攻撃

f:id:ikeball:20210124133135g:plain

Aim Control = Mouse, MinimumAngle = -30, MaximumAngle = 30、マウスで一周攻撃

f:id:ikeball:20210124134344g:plain

AimControl = Mouse, ReticleAtMousePostion = true、マウスを動かして攻撃

f:id:ikeball:20210124104425g:plain

WeaponAimスクリプトを無効化

WeaponLaser Sight

f:id:ikeball:20210123141242p:plain

RaycastOriginOffset

 障害物検知用レイキャストの起点位置。この値は良く分からず。

LaserOriginOffset

 レーザーの起点修正位置。

LaserMaxDistance

 レーザーを描画する最大距離。

LaserCollisionMask

 レーザーを停止判断させる衝突レイヤー。

LaserWidth

 レーザーの幅。

LaserMaterial

 レーザーのレンダリングに使用される材料。

f:id:ikeball:20210124135208p:plain

WeaponLaser Sight 上が無効、下が有効

f:id:ikeball:20210124135809p:plain

LaserWidth x = 0.2/y = 0.2

f:id:ikeball:20210124140127p:plain

LaserMaterialの色を変更

MMSimpleObjectPooler

プールとは予め弾のオブジェクトを複数用意し発射の際にプールから取り出すことで、生成にかかる時間を短縮する仕組みです。弾は消滅するとプールに戻ります。

f:id:ikeball:20210123141313p:plain

MutualizeWaitingPools

 これが真の場合、同じ名前のプールが見つかった場合、新規待機プールを作成しないようにします。

NestWaitingPool
 全ての管理オブジェクトをは、空のゲームオブジェクトの下に再グループ化されます。そうでなければ、それらは階層の最上位に配置する。

GameObjectToPool
 管理するオブジェクト。発射する弾のオブジェクトです。

PoolSize
 プールに管理するオブジェクト数。

PoolCanExpand
 true の場合、プールは必要に応じて自動的にオブジェクトを追加します。PoolSize以上の弾が必要となった場合実行中に用意するかどうかの指定です。

f:id:ikeball:20210124141642p:plain

起動時に追加されているこのオブジェクトがプールです。

おわりに

最近記事見ましたよ。ってコメントを頂けるようになって嬉しいです!

今後もアウトプット続けていきたいと思います。次回は別の記事を挟んだのち「オリジナル武器の作成②弾の設定調査」を予定しています。

関連記事

ikeball.hatenablog.com

【Unity】【Corgi Engine】キーボード入力方法の変更

f:id:ikeball:20210119071954p:plain

はじめに

Corgi Engineで初めて操作する際にキーボードの↑↓←→に反応しないのどうしてだろうと感じました。 確認したところ↑↓←→に反応していないわけではなく、プレイヤー2の割り当てとして使用されているためとなります。

「前振りはいらんのや」、「変更したいんや」って方は【入力方法変更】へ飛んでください。

ここでは移動方向について焦点をあてて説明していますが、他のボタン変更もやり方は同じ方法でできそうです。

使用アセット

Corgi Engine - 2D + 2.5D Platformer

作業環境

Unity 2019.4.16f1

公式ドキュメントの場所(英語)

Input | Corgi Engine Documentation

デフォルトの割り当て

公式ドキュメント

公式ドキュメントを確認したところ↑↓←→はPlayer2に割り当てられていました。

f:id:ikeball:20210119072847p:plain

操作入力を確認できるデモ

Assets/CorgiEngine/Demos/TheHunt に各プレイヤーの入力が確認できるデモがありました。

f:id:ikeball:20210119074623p:plain

ドキュメントに合わせて操作してみました。

f:id:ikeball:20210119074239g:plain

入力設定が行われている場所

Unityメニュー → Edit → Project Settings... を選択します。

f:id:ikeball:20210119075040p:plain

Input Managerを選択し、Axesを開きます。
入力の設定はここで行われています。

f:id:ikeball:20210119075446p:plain

入力方法変更

ここでは、プレイヤー1の操作を移動方向を↑↓←→に反応するようにしてみます。
他のボタンや別のキーを設定したい場合も下記手順を参考に設定してみてください。

、、、、ただ、問題があります。デフォルトのキー配置で既にキーボードの空きがほとんどない状態にあります。
この問題のため何かを割り切る必要がありそうです。
自身の作成に合うものを選択し対応してみてください。

f:id:ikeball:20210119072847p:plain

【案①】必要なPlayer数だけ考慮して設定を行う

デフォルト設定では4人プレイ想定のため空きがない状態となりますが、4人プレイのゲームを作らない限り他Playerのキー操作は無視してもいいはずです。
下記変更手順を行った場合は、Player1の操作でPlayer2もお同様に移動するようになります。

変更手順

①Unityメニュー → Edit → Project Settings... を選択します。
②Input Managerを選択し、Axesを開きます。
Player1_Horizontal を開き
Negative Button にleft
Positive Button にright
Alt Negative Button を空に設定します。
Player1_Verticalを開き
Negative Button にdown
Positive Button にup
Alt Positive Button を空に設定します。

他にも必要なボタンの変更があれば Player1_ のところを開き設定します。

f:id:ikeball:20210119082923p:plain

【案②】Player1とPlayer2の操作を入れ替える

Player2の移動手段として↑↓←→は設定されているため、その設定を流用します。
下記手順を行った場合はPlayer1は↑↓←→で移動し、Player2がWSADで動くようになります。

変更手順

①Unityメニュー → Edit → Project Settings... を選択します。
②Input Managerを選択し、Axesを開きます。
Player1_Horizontal, Player2_Horizontalを開き
Name, Joy Numの値を入れ替えます。

f:id:ikeball:20210119084717p:plain

Player1_Vertical, Player2_Verticalを開き
Name, Joy Numの値を入れ替えます。

f:id:ikeball:20210119084642p:plain

移動操作以外にも変更したいボタンがあれば Player1 とPlayer2 の定義を置き換えます。

【案③】スクリプトを更新しでPlayer2の操作もPlayer1として解釈する

一人用のゲームと割り切って作成する場合は入力処理を触って変更することもできそうです。 この変更を行うとWSADと↑↓←→が共にPlayer1の入力して受け付けます。

基本機能のスクリプトはあまり触りたくはありませんが、複数の操作に反応できるメリットがあります。
PCゲームでWSADで移動するのは基本だと考えていますが、↑↓←→も反応したって良いじゃないかと考えた場合、一度挑戦してみてください。

変更手順

Assets/CorgiEngine/Common/Scripts/Managers/InputManager のスクリプトを開きます。

f:id:ikeball:20210119224740p:plain

InputManagerの定義の宣言に下記を追加します。
既存の仕組みでは1操作につき1入力しか保存していないため、2つ目の操作を受け取れるように追加しています。

        protected string _axisHorizontal2;
        protected string _axisVertical2;

f:id:ikeball:20210119225547p:plain

スクリプト220行目付近にある、InitializeAxis()に下記記述を追加します。
ここでは"Player2"を直接記載しています。
色々と変更すればここに書く必要なくできますが、ここでは手順が最も少ないと考えた内容になります。

        _axisHorizontal2 = "Player2" + "_Horizontal";
        _axisVertical2 = "Player2" + "_Vertical";

f:id:ikeball:20210119232711p:plain

スクリプト340行目付近にある、SetMovement()に下記記述を追加します。
これは入力1の操作が何もなければ、Player2側の入力情報を見に行くという処理になります。
Player1, Player2側の操作が同時に行われた場合は、先にみているPlayer1側の入力が有効になります。

                if (_primaryMovement == Vector2.zero) {
                        _primaryMovement.x = Input.GetAxis(_axisHorizontal2);
                        _primaryMovement.y = Input.GetAxis(_axisVertical2);
                }


                if (_primaryMovement == Vector2.zero) {
                        _primaryMovement.x = Input.GetAxisRaw(_axisHorizontal2);
                        _primaryMovement.y = Input.GetAxisRaw(_axisVertical2);
                }

f:id:ikeball:20210119233429p:plain

別の考え方

キーボード操作カスタムについて確認してきましたが、別視点での考えをまとめました。

パッドを用意する

パッドがあって快適に操作できる分には申し分ないと考えていますが、パッドを持っていないユーザーが遊べなくなってしまうためやはりキーボード操作は必須ではないかと考えています。

キーコンフィグを作成する

これが全ての答えではないでしょうか。
ユーザーが自由に設定できる機能を実装できれば、WSADで移動したい人はそのまま、↑↓←→で移動したい人は、そのキーを設定することが出来れば解決します。
今回の記事ではキーコンフィグの実装までまとめられていませんが、別記事にて挑戦したいと思います。

おわりに

記事を書いていると考えがまとまって自身の勉強にもなっています。
キーコンフィグも実装して記事にしたいです。

関連記事

ikeball.hatenablog.com

ikeball.hatenablog.com

【Unity】【Corgi Engine】Corgi Engine記事まとめ

f:id:ikeball:20210117122534p:plain

はじめに

Unity2DゲームエンジンのCorgi Engineについて調査した内容をまとめています。

公式ドキュメントが英語で少し敷居が高いですが、高いパフォーマンスを秘めたアセットですので是非とも使い倒せるようになりたいです。

記事はまだ少ないですが追加したら、このページに都度反映させていきます。

使用アセット

Corgi Engine - 2D + 2.5D Platformer

作業環境

Unity 2019.4.16f1

記事まとめ

用意した記事の動画とリンクをまとめています。

今後も追加していきます。

Corgi Engineどんなことができるのか

f:id:ikeball:20210106201542g:plain

ikeball.hatenablog.com

プレイヤー/敵の作成

プレイヤーモデルの差し替え

f:id:ikeball:20210108221638g:plain

ikeball.hatenablog.com

敵モデルの差し替え

f:id:ikeball:20210116200700g:plain

ikeball.hatenablog.com

ステージ作成/ギミック紹介

f:id:ikeball:20210110222731g:plain

ikeball.hatenablog.com

キーボード入力方法の変更

f:id:ikeball:20210119074239g:plain

ikeball.hatenablog.com

サウンドの再生

ikeball.hatenablog.com

体力ゲージ調査

ikeball.hatenablog.com

オリジナル武器の作成

ikeball.hatenablog.com

Corgi Engine公式情報

公式サイト

説明は英語ですが翻訳機能を使用すればなんとか、、更新情報、デモやドキュメントの記載もこのサイト内にあります。

f:id:ikeball:20210117130515p:plain

corgi-engine.moremountains.com

公式ドキュメント

翻訳機能を使っても是非とも見たいページです。

シーンやコンポーネントの説明も載っています。

f:id:ikeball:20210117131851p:plain

corgi-engine-docs.moremountains.com

公式YouTube

紹介動画はどのような事が事ができるのか映像で確認することが出来ます。

f:id:ikeball:20210117130434p:plain

www.youtube.com

他サイト様

ヴぁ部様

CorgiEngineの情報の場所についてまとめて下さっています。

takehata.com

志方くろう(Unity初心者)さま

Corgi Engine最小シーンについてまとめて下さっています。

note.com

kelorin jo様

AI挙動について記載して下さっています。

 

ch.nicovideo.jp

おわりに

まだまだ記事数が少ないので、これからも調査、追加していきます。

関連記事

2D見下ろしゲーム作成にTopDown Engineと言うものがあります。

作成もとが同じでCorgi Engineと良く似た形で使用ができます。

ikeball.hatenablog.com

【Unity】【Corgi Engine】敵モデル差し替え

f:id:ikeball:20210116200222p:plain

はじめに

敵モデルの差し替えについて調べました。

プレイヤーの差し替えと近い形で変更ができました。

f:id:ikeball:20210116200700g:plain

使用アセット

Corgi Engine - 2D + 2.5D Platformer

ATART MonsterPack Vol.1: Slime, Goblin, Mimic Book

ATART Monster Boar

上のモンスターアセットセットには同梱されていないBoarのモデルです。

作業環境

Unity 2019.4.16f1

デモ敵の確認

デモで用意されているプレハブ

Assets/CorgiEngine/Demos/Corgi3D/Prefabs/AIにデモで使用されている敵のプレハブが入っています。5つのプレハブが用意されていますが、設定されているモデル以外違いは無さそうです。

f:id:ikeball:20210112235101p:plain

プレハブ構成の確認

デモデータで用意されている敵プレハブの作りをWolf3Dのデータで確認をしました。

f:id:ikeball:20210112235602p:plain

Wolf3D ... キャラクター、当たり判定、HP、攻撃力、歩きAIの設定が行われています。

 ・ModelContainer...モデルのルートオブジェクト

  ・Model...対象のモデル

 ・DeathFeedbacks...死んだ時何をするかの設定。特に設定はされていません。

 ・DamageFeedbacks...ダメージを受けたときに何をするかの設定。パーティクル表示、SE鳴音の設定。

 ・WalkParticles...歩いた際に表示されるパーティクルの設定。

 ・WalkFeedbacks...歩き時に何をするかの設定。WalkParticlesの再生が設定。

f:id:ikeball:20210112235711p:plain

アニメーションの確認

敵のアニメーターに設定されているのはidle, walk, threeD-climbingldle, threeD-climbingMoveの4つで梯子の上り下りを考慮しなければ、待機歩きの2モーション設定すれば差し替えができそうです。

(確認したところモデルのアニメーションという分けではなくTransformのみで動かしているためモデルを差し替えるだけでも同じようには動きそうです)

f:id:ikeball:20210113010721p:plain

threeD-idle...待機

f:id:ikeball:20210115073652g:plain

threeD-walk...歩き

f:id:ikeball:20210115073852g:plain

threeD-climbingIdle...階段待機

f:id:ikeball:20210115074009g:plain

threeD-climbingMove...階段移動

f:id:ikeball:20210115074130g:plain

敵モデルの差し替え

ベースモデルのコピー

Assets/CorgiEngine/Demos/Corgi3D/Prefabs/AI/Wolf3D

をコピーし、Boarと名前を変更しました。

f:id:ikeball:20210115075136p:plain

置き換えモデルの配置

Boarプレハブをダブルクリックで開き、用意したモデルをModelContainerの下に配置します。ここではWolf3DAssets/ARART/MonsterVol.1/Boar/Prefabs/Boarを配置しました。

f:id:ikeball:20210115080226p:plain

モデルが合体したような表示になります。

f:id:ikeball:20210115080409p:plain

向きの調整を行いました。

サイズ感は大きく違わないためScaleの変更は行っていません。

f:id:ikeball:20210116151908p:plain

当たり判定の調整

サイズ感が少し違うため当たり判定を調整します。

①HierarchyからModelを非表示に変更する。(最終的には削除して問題ありません)

②Wolf3Dトップノードを選択する。

③Box Collider 2DのEdit Colliderをクリックする。

④Sceneの2Dボタンを押す。横から見えるようになります。

 設定後は解除しても大丈夫です。

⑤モデルの大きさに合わせて当たり判定のサイズを調整します。

f:id:ikeball:20210116160537p:plain

アニメーションの置き換え

Assets/CorgiEngine/Demos/Corgi3D/Animations/threeD-animatorをコピーし名前をboar-animatorに変更しました。

f:id:ikeball:20210116153758p:plain

追加モデルのAnimatorのControllerに複製したboar-animatorを設定します。

f:id:ikeball:20210116153959p:plain

Characterスクリプトに追加したAnimatorを設定します。

①ノードトップのBoarを選択します。

②下の方にスクロールしCharacterを探します。

③Character Animatorに追加したモデルのAnimatorを設定します。

f:id:ikeball:20210116161522p:plain

boar-animatorを選択した状態でAnimatorウィンドウを表示します。

(Unityメニュー→Window→Animation→Animatorから表示できます)

 

ここでidle, walkのアニメーションを置き換えます。threeD-climbingIdle, threeD-climbingMoveも置き換えたい所ではありますが、自作しない限り階段を上り下りするモーションが用意されていることは稀ではないでしょうか。

 

青色で囲った枠ないのファイル名が操作しようとしているファイル名と一致しているか確認してから変更していきます。

f:id:ikeball:20210116154450p:plain

①Animatorビューからidleをクリックする

②用意したモデルの待機モーションをMotionに設定します。

ここでは、Assets/ATART/MonsterVol.1/Boar/Animations/Boar@Idle1/Idle1を設定しました。

f:id:ikeball:20210116155122p:plain

次にwalkを選択し、移動モーションを設定します。

ここではAssets/ATART/MonsterVol.1/Boar/Animations/Boar@run/run を設定しました。

walkのモーションも用意されていますが、runの方が攻撃してきている感じが出ると思い設定した形となります。

f:id:ikeball:20210116155435p:plain

これで設定は終了となります。

他のモンスターも置き換えたり、シーンに配置して動作を確認してみてください。

f:id:ikeball:20210116161145g:plain

シェーダーの変更

下記の操作は必要に応じて行ってください。用意したモデルが特別なシェーダーを使用している場合や、見た目上問題ない場合は対応の必要はありません。

 

モデルの置き換え自体の設定は終了していますが実際に表示した際に、周りと比べると何か表示が違う?となる場合があります。

f:id:ikeball:20210116170842p:plain

今回はCorgi Engineで使用されているシェーダーに変更し調整したいと思います。

変更前に設定されているシェーダーはUnlitShadowです。

シェーダーにUnlitと入っているものはライトの影響を受けず表示を行いますよと言う設定になっています。

f:id:ikeball:20210116170825p:plain

変更前に設定されているテクスチャが何か確認します。

ここでは、設定されているのはBoar01であること確認しました。

f:id:ikeball:20210116171533p:plain

①ShaderをMoreMountains/MMToonに変更します。

②Toon RampにCorgi3DRampを設定します。

③RimColorをRGBA(255,255,255,0)に設定しました。

 (好きな値で調整してください)

④RimPowerを1.5にしました。

 (好きな値で調整してください)

⑤先ほど確認したテクスチャを設定します。ここではBoar01を設定しました。

f:id:ikeball:20210116173608p:plain

変更前と後で大きな違いはないようにしています。

ゲームに合わせて色々と調整してみてください。

f:id:ikeball:20210116174115p:plain

おわりに

敵のモーションは待機と移動の2種だけあれば何とかなりそうでした。

プレイヤー置き換え、ステージ置き換え、モンスター置き換えまでするとだいぶ雰囲気が出てきました。引き続き調査していきます。

関連記事

ikeball.hatenablog.com

ikeball.hatenablog.com

ikeball.hatenablog.com

【Unity】【AssetStore】モンスターモデル紹介

f:id:ikeball:20210111142419p:plain

はじめに

キャラクターモデルの次はモンスターモデルが欲しくなり、アーチャーモデルが良かったので同じ作者のモンスターを買ってみました。モデルの種類、用意されているアニメーションを確認しました。

紹介アセット

ATART MonsterPack Vol.1: Slime, Goblin, Mimic Book

Slime, Goblin, Mimic Bookのモデル3種セットです。

各モデルに4色用意されています。

ATART Monster Boar

上のセットには同梱されていないBoarのモデルです。

4色用意されています。

使用アセット

100+ Hand Painted Textures

地面のテクスチャはこちらのアセットのground_03_p16を使用しています。

f:id:ikeball:20210111145553g:plain

モデル情報

モデル 名前 ポリゴン数

f:id:ikeball:20210111183259p:plain

Slime 276 poly

f:id:ikeball:20210111183116p:plain

Goblin 1323 poly

f:id:ikeball:20210111183137p:plain

Goblin Weapon 84 poly

f:id:ikeball:20210111212220p:plain

Mimic Book 1448 poly

f:id:ikeball:20210111182532p:plain

Boar 864 poly

カラーパターン

Slime

f:id:ikeball:20210111175750p:plain

Goblin

f:id:ikeball:20210111180125p:plain

Mimic Book

f:id:ikeball:20210111180302p:plain

Boar

f:id:ikeball:20210111180403p:plain

 アニメーション

Slime

Idle1...待機1

f:id:ikeball:20210112151822g:plain

Idle2...待機2

f:id:ikeball:20210112151946g:plain

Walk...歩き

f:id:ikeball:20210112152514g:plain

Run...走り

f:id:ikeball:20210112152237g:plain

Jump_In/Jump_Out...ジャンプ→着地

f:id:ikeball:20210112152119g:plain

Attack1...攻撃1

f:id:ikeball:20210112142700g:plain

Attack2...攻撃2

f:id:ikeball:20210112142814g:plain

Attack3...攻撃3

f:id:ikeball:20210112142954g:plain

Damage_Weak...小ダメージ

f:id:ikeball:20210112151145g:plain

Damage_Strong...大ダメージ

f:id:ikeball:20210112152631g:plain

Damage_Blocking...ブロッキング(ガード)

f:id:ikeball:20210112143830g:plain

Damage_Down/Damage_DownHit/Damage_Rise...ダウン→追い打ちダメージ→起き上がり

f:id:ikeball:20210112144025g:plain

Damage_DownWait...ダウン中

f:id:ikeball:20210112144230g:plain

Damage_Air_In/Damage_Air_Out...空中ダメージイン→空中ダメージアウト

f:id:ikeball:20210112143306g:plain

Damage_AirHit1...空中ダメージ落下小

f:id:ikeball:20210112143429g:plain

Damage_AirHit2...空中ダメージ落下大

f:id:ikeball:20210112143612g:plain

Damage_Stun...気絶

f:id:ikeball:20210112151009g:plain

Death...ダウン

f:id:ikeball:20210112151427g:plain

Spawn...出現時

f:id:ikeball:20210112152355g:plain

Buff1...バフリアクション

f:id:ikeball:20210112143118g:plain

Discover...回復リアクション

f:id:ikeball:20210112151652g:plain

Goblin

Idle1...待機1

f:id:ikeball:20210112080750g:plain

Idle2...待機2

f:id:ikeball:20210112092628g:plain

Walk...歩き

f:id:ikeball:20210112095303g:plain

Run...走り

f:id:ikeball:20210112093854g:plain

Jump_In/Jump_Out...ジャンプ→着地

f:id:ikeball:20210112093427g:plain

Attack1...攻撃1

f:id:ikeball:20210111233540g:plain

Attack2...攻撃2

f:id:ikeball:20210111233717g:plain

Attack3...攻撃3

f:id:ikeball:20210111234012g:plain

Damage_Weak...小ダメージ

f:id:ikeball:20210112075932g:plain

Damage_Strong...大ダメージ

f:id:ikeball:20210112075613g:plain

Damage_Blocking...ブロッキング(ガード)

f:id:ikeball:20210112074814g:plain

Damage_Down/Damage_DownHit/Damage_Rise...ダウン→追い打ちダメージ→起き上がり

f:id:ikeball:20210112075300g:plain

Damage_DownWait...ダウン中

f:id:ikeball:20210112075438g:plain

Damage_Air_In/Damage_Air_Out...空中ダメージイン→空中ダメージアウト

f:id:ikeball:20210111234537g:plain

Damage_AirHit1...空中ダメージ落下小

f:id:ikeball:20210111234925g:plain

Damage_AirHit2...空中ダメージ落下大

f:id:ikeball:20210111235156g:plain

Damage_Stun...気絶

f:id:ikeball:20210112075805g:plain

Death...ダウン

f:id:ikeball:20210112080100g:plain

Spawn...出現時

f:id:ikeball:20210112094532g:plain

Buff1...バフリアクション

f:id:ikeball:20210111234152g:plain

Discover...回復リアクション

f:id:ikeball:20210112080328g:plain

Mimic Book

Idle1...待機1

f:id:ikeball:20210112161139g:plain

Idle2...待機2

f:id:ikeball:20210112161438g:plain

Walk...歩き

f:id:ikeball:20210112162544g:plain

Run...走り

f:id:ikeball:20210112161710g:plain

Jump_In/Jump_Out...ジャンプ→着地

f:id:ikeball:20210112161609g:plain

Attack1...攻撃1

f:id:ikeball:20210112152904g:plain

Attack2...攻撃2

f:id:ikeball:20210112153028g:plain

Attack3...攻撃3

f:id:ikeball:20210112153250g:plain

Damage_Weak...小ダメージ

f:id:ikeball:20210112160209g:plain

Damage_Strong...大ダメージ

f:id:ikeball:20210112162819g:plain

Damage_Blocking...ブロッキング(ガード)

f:id:ikeball:20210112163155g:plain

Damage_Down/Damage_DownHit/Damage_Rise...ダウン→追い打ちダメージ→起き上がり

f:id:ikeball:20210112155233g:plain

Damage_DownWait...ダウン中

f:id:ikeball:20210112163304g:plain

Damage_Air_In/Damage_Air_Out...空中ダメージイン→空中ダメージアウト

f:id:ikeball:20210112153838g:plain

Damage_AirHit1...空中ダメージ落下小

f:id:ikeball:20210112154005g:plain

Damage_AirHit2...空中ダメージ落下大

f:id:ikeball:20210112154813g:plain

Damage_Stun...気絶

f:id:ikeball:20210112160022g:plain

Death...ダウン

f:id:ikeball:20210112160719g:plain

Spawn...出現時

f:id:ikeball:20210112161905g:plain

Buff1...バフリアクション

f:id:ikeball:20210112153409g:plain

Discover...回復リアクション

f:id:ikeball:20210112160918g:plain

Boar

Idle1...待機1

f:id:ikeball:20210112170622g:plain

Idle2...待機2

f:id:ikeball:20210112170753g:plain

Walk...歩き

f:id:ikeball:20210112171400g:plain

Run...走り

f:id:ikeball:20210112171050g:plain

Jump_In/Jump_Out...ジャンプ→着地

f:id:ikeball:20210112170910g:plain

Attack1...攻撃1

f:id:ikeball:20210112163447g:plain

Attack2...攻撃2

f:id:ikeball:20210112163557g:plain

Attack3...攻撃3

※Attack3は5回転?+着地モーションです。別途回転だけのループアニメが別用意されています。

f:id:ikeball:20210112163914g:plain

Damage_Weak...小ダメージ

f:id:ikeball:20210112170211g:plain

Damage_Strong...大ダメージ

f:id:ikeball:20210112165751g:plain

Damage_Blocking...ブロッキング(ガード)

f:id:ikeball:20210112165322g:plain

Damage_Down/Damage_DownHit/Damage_Rise...ダウン→追い打ちダメージ→起き上がり

f:id:ikeball:20210112165439g:plain

Damage_DownWait...ダウン中

f:id:ikeball:20210112165634g:plain

Damage_Air_In/Damage_Air_Out...空中ダメージイン→空中ダメージアウト

f:id:ikeball:20210112164705g:plain

Damage_AirHit1...空中ダメージ落下小

f:id:ikeball:20210112165034g:plain

Damage_AirHit2...空中ダメージ落下大

f:id:ikeball:20210112165216g:plain

Damage_Stun...気絶

f:id:ikeball:20210112170049g:plain

Death...ダウン

f:id:ikeball:20210112170334g:plain

Spawn...出現時

f:id:ikeball:20210112171239g:plain

Buff1...バフリアクション

f:id:ikeball:20210112164207g:plain

Discover...回復リアクション

f:id:ikeball:20210112171543g:plain

おわりに

アニメーション見てるだけでも愛着が湧いてきました!

一推しはイノシシです。

(イノシシの背景がかぶっているので変更すれば良かったと反省しています)

さっそくゲームに入れて動かしてみたいと思います。

関連記事

ikeball.hatenablog.com

関連アセット

ATART Casual Warrior Pack

戦士モデル。

ATART Casual Archer Pack

アーチャーモデル。