Animator의 동적attach 및 중지, 재생성 제어
컨디션
Unity 5.3.7p4
사용 자산: Sprite Pack#1-Tap and Fly
https://www.assetstore.unity3d.com/jp/#!/content/21454
개시하다
하고 싶은 일
・동적attach Animatior 구성 요소
• 아무 때나 플레이
· 애니메이션의 첫 번째 프레임을 언제든지 되돌려줍니다
실패한 일
・Animaator?AnimatorController?Animation?AnimationClip?비슷한 게 많아요!
·Animator는 Stop에서 멈추지만 플레이에서는 다시 시작하지 않습니다...
・프레임 1로 초기화 상태를 지정할 수 없습니까?
선취합 using UnityEngine;
public class AnimationContorller : MonoBehaviour {
// プレイヤーオブジェクト
[SerializeField]
GameObject m_playerObj;
// プレイヤーのアニメーターコンポーネント
Animator m_playerAnimaor;
// animatorのstate名
const string MOVE_ANIM_NAME = "move";
// アニメーションの開始時間
float m_animStartTime;
// プレイヤーの初期位置
Vector3 m_startPos;
// 鳥のSpriteRenderer
SpriteRenderer m_sprite;
// 鳥のSpriteRendererのXの向き
bool m_xFlip;
// Use this for initialization
void Start () {
// Animatorコンポーネントをaddし、AnimatorControllerをセットする
m_playerAnimaor = m_playerObj.AddComponent<Animator>();
m_playerAnimaor.runtimeAnimatorController = Resources.Load<RuntimeAnimatorController>("Animation/Player");
m_playerAnimaor.enabled = false;
// 巻き戻し用に記憶
m_startPos = m_playerObj.transform.localPosition;
m_sprite = m_playerObj.transform.Find("Bird").GetComponent<SpriteRenderer>();
m_xFlip = m_sprite.flipX;
}
/// <summary>
/// 再生ボタンタップ
/// </summary>
public void Play(){
// 再生中なら返す
if (m_playerAnimaor.enabled) {
return;
}
m_playerAnimaor.enabled = true;
m_playerAnimaor.Play(MOVE_ANIM_NAME, 0, m_animStartTime);
}
/// <summary>
/// ポーズボタンタップ
/// </summary>
public void Pause(){
m_playerAnimaor.enabled = false;
m_animStartTime = m_playerAnimaor.GetCurrentAnimatorStateInfo(0).normalizedTime;
}
/// <summary>
/// 巻き戻しボタンタップ
/// </summary>
public void Rewind(){
m_playerAnimaor.enabled = false;
m_animStartTime = 0f;
m_playerAnimaor.transform.localPosition = m_startPos;
m_sprite.flipX = m_xFlip;
}
}
해설
애니메이션 주위의 반을 대체적으로 정리하다
Animation Clip 및 Animation 세트Animator Controller 및 Animator 세트단순히 애니메이션만 재생하고 싶다면 애니메이션 클립과 애니메이션만 있으면 된다.상태 관리와 시간 지정 등 복잡한 일을 하려면 Animatior Controller와 Animatior를 사용합니다.
Animation 단일체로 재생성하려면 Animation Clip을 Legacy로 만들어야 합니다.(8/7 보충: 기술 잊어버리기 mm)
▲ Animation 없이 단일 재생
http://kazuooooo.hatenablog.com/entry/2015/08/02/192754
【AnimationClip】
애니메이션 자산.
【Animation】
장면의 게임 객체가 Animation Clip과 연관된 구성 요소입니다.
【Animator Controller】
하나 이상의 Animation Clip에 대한 참조가 있으며 상태 관리자를 사용하여 변환된 자산을 관리합니다.
【Animator】
장면의 게임 개체와 Animatior Controller가 연결된 구성 요소입니다.
동적attach Animator
m_playerAnimaor = m_playerObj.AddComponent<Animator>();
m_playerAnimaor.runtimeAnimatorController = Resources.Load<RuntimeAnimatorController>("Animation/Player");
AddComponent는 그냥 Animatior이고 Animation Controller는runtime Animatior Controller로 지정하지 않으면 안 됩니다.
▲ Unity - script에서 Animation Controller 지정
http://qiita.com/hakuta/items/7208576a1af399dc8a65
애니메이션 시작 시간
m_playerAnimaor.Play(MOVE_ANIM_NAME, 0, m_animStartTime);
Animator.Play 매개변수를 사용하여 시작 시간을 지정할 수 있습니다.
Pause에 기록된 내용을 설정하면, 정지된 것에서 계속 재생할 수 있습니다.m_animStartTime = m_playerAnimaor.GetCurrentAnimatorStateInfo(0).normalizedTime;
애니메이션 초기화
많이 찾아봤는데 어떻게 첫 번째 프레임으로 만들었는지 모르겠어요
결과적으로 Start에 기록된 정보를 복원할 때 위치와 이미지 방향을 초기화합니다.
최후
나는 잠시 머리를 다 정리했다.
Animator State Info와 Animator Clip Info가 할 수 있는 일을 총괄하고 싶습니다.
Reference
이 문제에 관하여(Animator의 동적attach 및 중지, 재생성 제어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/310ma3/items/b4bae4c0c0087bd81f66
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
하고 싶은 일
・동적attach Animatior 구성 요소
• 아무 때나 플레이
· 애니메이션의 첫 번째 프레임을 언제든지 되돌려줍니다
실패한 일
・Animaator?AnimatorController?Animation?AnimationClip?비슷한 게 많아요!
·Animator는 Stop에서 멈추지만 플레이에서는 다시 시작하지 않습니다...
・프레임 1로 초기화 상태를 지정할 수 없습니까?
선취합 using UnityEngine;
public class AnimationContorller : MonoBehaviour {
// プレイヤーオブジェクト
[SerializeField]
GameObject m_playerObj;
// プレイヤーのアニメーターコンポーネント
Animator m_playerAnimaor;
// animatorのstate名
const string MOVE_ANIM_NAME = "move";
// アニメーションの開始時間
float m_animStartTime;
// プレイヤーの初期位置
Vector3 m_startPos;
// 鳥のSpriteRenderer
SpriteRenderer m_sprite;
// 鳥のSpriteRendererのXの向き
bool m_xFlip;
// Use this for initialization
void Start () {
// Animatorコンポーネントをaddし、AnimatorControllerをセットする
m_playerAnimaor = m_playerObj.AddComponent<Animator>();
m_playerAnimaor.runtimeAnimatorController = Resources.Load<RuntimeAnimatorController>("Animation/Player");
m_playerAnimaor.enabled = false;
// 巻き戻し用に記憶
m_startPos = m_playerObj.transform.localPosition;
m_sprite = m_playerObj.transform.Find("Bird").GetComponent<SpriteRenderer>();
m_xFlip = m_sprite.flipX;
}
/// <summary>
/// 再生ボタンタップ
/// </summary>
public void Play(){
// 再生中なら返す
if (m_playerAnimaor.enabled) {
return;
}
m_playerAnimaor.enabled = true;
m_playerAnimaor.Play(MOVE_ANIM_NAME, 0, m_animStartTime);
}
/// <summary>
/// ポーズボタンタップ
/// </summary>
public void Pause(){
m_playerAnimaor.enabled = false;
m_animStartTime = m_playerAnimaor.GetCurrentAnimatorStateInfo(0).normalizedTime;
}
/// <summary>
/// 巻き戻しボタンタップ
/// </summary>
public void Rewind(){
m_playerAnimaor.enabled = false;
m_animStartTime = 0f;
m_playerAnimaor.transform.localPosition = m_startPos;
m_sprite.flipX = m_xFlip;
}
}
해설
애니메이션 주위의 반을 대체적으로 정리하다
Animation Clip 및 Animation 세트Animator Controller 및 Animator 세트단순히 애니메이션만 재생하고 싶다면 애니메이션 클립과 애니메이션만 있으면 된다.상태 관리와 시간 지정 등 복잡한 일을 하려면 Animatior Controller와 Animatior를 사용합니다.
Animation 단일체로 재생성하려면 Animation Clip을 Legacy로 만들어야 합니다.(8/7 보충: 기술 잊어버리기 mm)
▲ Animation 없이 단일 재생
http://kazuooooo.hatenablog.com/entry/2015/08/02/192754
【AnimationClip】
애니메이션 자산.
【Animation】
장면의 게임 객체가 Animation Clip과 연관된 구성 요소입니다.
【Animator Controller】
하나 이상의 Animation Clip에 대한 참조가 있으며 상태 관리자를 사용하여 변환된 자산을 관리합니다.
【Animator】
장면의 게임 개체와 Animatior Controller가 연결된 구성 요소입니다.
동적attach Animator
m_playerAnimaor = m_playerObj.AddComponent<Animator>();
m_playerAnimaor.runtimeAnimatorController = Resources.Load<RuntimeAnimatorController>("Animation/Player");
AddComponent는 그냥 Animatior이고 Animation Controller는runtime Animatior Controller로 지정하지 않으면 안 됩니다.
▲ Unity - script에서 Animation Controller 지정
http://qiita.com/hakuta/items/7208576a1af399dc8a65
애니메이션 시작 시간
m_playerAnimaor.Play(MOVE_ANIM_NAME, 0, m_animStartTime);
Animator.Play 매개변수를 사용하여 시작 시간을 지정할 수 있습니다.
Pause에 기록된 내용을 설정하면, 정지된 것에서 계속 재생할 수 있습니다.m_animStartTime = m_playerAnimaor.GetCurrentAnimatorStateInfo(0).normalizedTime;
애니메이션 초기화
많이 찾아봤는데 어떻게 첫 번째 프레임으로 만들었는지 모르겠어요
결과적으로 Start에 기록된 정보를 복원할 때 위치와 이미지 방향을 초기화합니다.
최후
나는 잠시 머리를 다 정리했다.
Animator State Info와 Animator Clip Info가 할 수 있는 일을 총괄하고 싶습니다.
Reference
이 문제에 관하여(Animator의 동적attach 및 중지, 재생성 제어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/310ma3/items/b4bae4c0c0087bd81f66
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
using UnityEngine;
public class AnimationContorller : MonoBehaviour {
// プレイヤーオブジェクト
[SerializeField]
GameObject m_playerObj;
// プレイヤーのアニメーターコンポーネント
Animator m_playerAnimaor;
// animatorのstate名
const string MOVE_ANIM_NAME = "move";
// アニメーションの開始時間
float m_animStartTime;
// プレイヤーの初期位置
Vector3 m_startPos;
// 鳥のSpriteRenderer
SpriteRenderer m_sprite;
// 鳥のSpriteRendererのXの向き
bool m_xFlip;
// Use this for initialization
void Start () {
// Animatorコンポーネントをaddし、AnimatorControllerをセットする
m_playerAnimaor = m_playerObj.AddComponent<Animator>();
m_playerAnimaor.runtimeAnimatorController = Resources.Load<RuntimeAnimatorController>("Animation/Player");
m_playerAnimaor.enabled = false;
// 巻き戻し用に記憶
m_startPos = m_playerObj.transform.localPosition;
m_sprite = m_playerObj.transform.Find("Bird").GetComponent<SpriteRenderer>();
m_xFlip = m_sprite.flipX;
}
/// <summary>
/// 再生ボタンタップ
/// </summary>
public void Play(){
// 再生中なら返す
if (m_playerAnimaor.enabled) {
return;
}
m_playerAnimaor.enabled = true;
m_playerAnimaor.Play(MOVE_ANIM_NAME, 0, m_animStartTime);
}
/// <summary>
/// ポーズボタンタップ
/// </summary>
public void Pause(){
m_playerAnimaor.enabled = false;
m_animStartTime = m_playerAnimaor.GetCurrentAnimatorStateInfo(0).normalizedTime;
}
/// <summary>
/// 巻き戻しボタンタップ
/// </summary>
public void Rewind(){
m_playerAnimaor.enabled = false;
m_animStartTime = 0f;
m_playerAnimaor.transform.localPosition = m_startPos;
m_sprite.flipX = m_xFlip;
}
}
애니메이션 주위의 반을 대체적으로 정리하다
Animation Clip 및 Animation 세트Animator Controller 및 Animator 세트단순히 애니메이션만 재생하고 싶다면 애니메이션 클립과 애니메이션만 있으면 된다.상태 관리와 시간 지정 등 복잡한 일을 하려면 Animatior Controller와 Animatior를 사용합니다.
Animation 단일체로 재생성하려면 Animation Clip을 Legacy로 만들어야 합니다.(8/7 보충: 기술 잊어버리기 mm)
▲ Animation 없이 단일 재생
http://kazuooooo.hatenablog.com/entry/2015/08/02/192754
【AnimationClip】
애니메이션 자산.
【Animation】
장면의 게임 객체가 Animation Clip과 연관된 구성 요소입니다.
【Animator Controller】
하나 이상의 Animation Clip에 대한 참조가 있으며 상태 관리자를 사용하여 변환된 자산을 관리합니다.
【Animator】
장면의 게임 개체와 Animatior Controller가 연결된 구성 요소입니다.
동적attach Animator
m_playerAnimaor = m_playerObj.AddComponent<Animator>();
m_playerAnimaor.runtimeAnimatorController = Resources.Load<RuntimeAnimatorController>("Animation/Player");
AddComponent는 그냥 Animatior이고 Animation Controller는runtime Animatior Controller로 지정하지 않으면 안 됩니다.▲ Unity - script에서 Animation Controller 지정
http://qiita.com/hakuta/items/7208576a1af399dc8a65
애니메이션 시작 시간
m_playerAnimaor.Play(MOVE_ANIM_NAME, 0, m_animStartTime);
Animator.Play 매개변수를 사용하여 시작 시간을 지정할 수 있습니다.Pause에 기록된 내용을 설정하면, 정지된 것에서 계속 재생할 수 있습니다.
m_animStartTime = m_playerAnimaor.GetCurrentAnimatorStateInfo(0).normalizedTime;
애니메이션 초기화
많이 찾아봤는데 어떻게 첫 번째 프레임으로 만들었는지 모르겠어요
결과적으로 Start에 기록된 정보를 복원할 때 위치와 이미지 방향을 초기화합니다.
최후
나는 잠시 머리를 다 정리했다.
Animator State Info와 Animator Clip Info가 할 수 있는 일을 총괄하고 싶습니다.
Reference
이 문제에 관하여(Animator의 동적attach 및 중지, 재생성 제어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/310ma3/items/b4bae4c0c0087bd81f66
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Animator의 동적attach 및 중지, 재생성 제어), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/310ma3/items/b4bae4c0c0087bd81f66텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)