マリオのような高さ(滞空時間)が変わるジャンプにアニメーションを対応させるため、
上昇、滞空状態、下降の3種類のループするアニメーションを切り替えて表現したいと考えています。
現在座標から1フレーム前の座標をVector2 thrustとして取得し、Y座標を取得、この数値によって切り替える仕組みです。
①thrust = CharacterPosition - beforeCharacterPosition;の計算が始まるまでに5-6フレームかかるようで、アニメーションの切り替わりにも影響する様です。
またVector2 thrustで取得した値が壁や床に衝突すると、想定から外れた数値が表示されます。
例-0.20665759>5.114079e-05
②animator.SetTrigger("Jump");だったものをanimator.SetFloat("JumpHight", thrust.y);に変えた所、まともにアニメーションが切り替わらなくなりました。おかしな切り替わり方をします。
何か解決策、あるいは適した手法があればご教示お願い致します。
発生している問題・エラーメッセージ
'Player' AnimationEvent has no function name specified! Parameter 'Jump1' does not exist. UnityEngine.Animator:SetTrigger(String) PlayerController:ActionJump() (at Assets/GameData/Script/PlayerController.cs:170)
該当のソースコード
c#
1BaseCharacterController.cs 2public class BaseCharacterController : MonoBehaviour 3{ 4 public Vector2 CharacterPosition; 5 public Vector2 beforeCharacterPosition; 6 public Vector2 thrust; 7} 8 9PlayerController.cs 10public class PlayerController : BaseCharacterController 11{ 12 protected override void FixedUpdateCharacter() 13 { 14 //推力の取得 15 CharacterPosition = transform.position; 16 thrust = CharacterPosition - beforeCharacterPosition; 17//-省略- 18 //キャラクターの現在座標の記録 19 beforeCharacterPosition= CharacterPosition; 20 } 21 22 public void ActionJump() 23 { 24 ladder_active = false; 25 stair_active = false; 26 movement_active = false; 27 28 switch (jumpCount) 29 { 30 case 0: 31 if (grounded)// 地面に接触した状態でのジャンプ 32 { 33 //animator.SetTrigger("Jump"); 34 //thrust.y・・・0.1:上昇 0.01-0.01:滞空 -0.1:下降 35 animator.SetFloat("JumpHight", thrust.y); 36 RB.velocity = Vector2.up * Jumphight; 37 jumpStartTime = Time.fixedTime; 38 jumped = true; 39 jumpCount++; 40 } 41 } 42//-省略- 43 } 44}
補足情報(FW/ツールのバージョンなど)
Unity2018.3.0f.2

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/12/29 13:32
2018/12/30 04:28
2019/01/03 01:55