玩家行走动画
创建地面、了解骨骼
动画控制器
添加参数(有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" ) ;
}
}
新动画创建,切换,过渡