このgifのように2Dで崖を登るような動きを実現したいです。(絵が雑ですみません。)
######[パターン1]
そこで、書き出したアニメーションに下の画像のようにコマごとに座標を指定して、登っている表現を作りました。
しかしこの方法ではAnimationにpositionが固定されてしまいます。
なのでアニメーションを描画した後アイドル状態に戻ると座標が動く前の地点に戻ってしまいます。
positionを指定したアニメーションをAnimatorから削除することでpositionを書き換えることができます。
(プレイ中にpositionを書き換えても動かない図、スクリプトでの移動もできませんでした)
######[パターン2]
いっそのことアニメーションを含めたサイズの画像を使ってアニメーション再生後に1ブロック分(ここでは1ドットがUnityでの1なので、横32マス上32マスづつ)ポジションに加算する方法を試しましたが、
アニメーション終了とアイドル時の位置が合わずにうまくいきませんでした。(これは予想通りでしたが)
(登った後余計なフレームが入る)
(実際の画像サイズ)
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Climb : MonoBehaviour 6{ 7 Animator anim; 8 9 // Start is called before the first frame update 10 void Start() 11 { 12 //とりあえずすぐにアニメーションを再生 13 anim = GetComponent<Animator>(); 14 anim.SetTrigger("climbTrigger"); 15 } 16 17 // Update is called once per frame 18 void Update() 19 { 20 21 } 22 void Anim_End()//アニメーション終了 23 { 24 // transformを取得 25 Transform myTransform = this.transform; 26 27 // 座標を取得 28 Vector3 pos = myTransform.position; 29 //1ブロック分 30 pos.x += 32f; 31 pos.y += 32f; 32 33 myTransform.position = pos; // 座標を設定 34 } 35} 36
とりあえず、アニメーションを再生させて1ブロック分(32×32)斜め上にに移動するという処理を作りたいのですが、どういう方法を取ればいいのでしょうか。
あなたの回答
tips
プレビュー