玩家行走動畫
創建地面、瞭解骨骼
動畫控制器
添加參數(有4 種類型)
添加剛體(爲了使觸發有效)、碰撞器
代碼:PlayerControl
public class PlayerControl : MonoBehaviour {
private Animator ani;
void Start ( ) {
ani = GetComponent< Animator> ( ) ;
}
void Update ( ) {
float vertical = Input. GetAxis ( "Vertical" ) ;
float hotizontal = Input. GetAxis ( "Horizontal" ) ;
Vector3 dir = new Vector3 ( hotizontal, 0 , vertical) ;
if ( dir != Vector3. zero)
{
transform. rotation = Quaternion. LookRotation ( dir) ;
transform. Translate ( Vector3. forward * 2 * Time. deltaTime) ;
ani. SetBool ( "Walk" , true ) ;
}
else
{
ani. SetBool ( "Walk" , false ) ;
}
}
}
門的動畫(舊版動畫)
觸發器;添加Animation組件後,得以創建舊版動畫。
幀動畫、錄製動畫
代碼:Door
public class Door : MonoBehaviour {
private Animation ani;
void Start ( ) {
ani = GetComponentInChildren< Animation> ( ) ;
}
void Update ( ) {
}
private void OnTriggerEnter ( Collider other)
{
ani. Play ( "DoorOpen" ) ;
}
private void OnTriggerExit ( Collider other)
{
ani. Play ( "DoorClose" ) ;
}
}
平臺升降動畫
製作好觸發器
代碼:CubeTest
public class CubeTest : MonoBehaviour {
private Animation ani;
void Start ( ) {
ani = GetComponent< Animation> ( ) ;
}
private void OnTriggerEnter ( Collider other)
{
AnimationState state = ani[ "Up" ] ;
state. time = 0 ;
state. speed = 1 ;
ani. Play ( "Up" ) ;
Debug. Log ( ani. isPlaying) ;
Debug. Log ( ani. IsPlaying ( "Up" ) ) ;
}
private void OnTriggerExit ( Collider other)
{
AnimationState state = ani[ "up" ] ;
state. time = state. length;
state. speed = - 1 ;
ani. Play ( "Up" ) ;
}
}
新動畫創建,切換,過渡