安装应用

将本站添加到主屏幕,获得类似原生应用的体验。

324 字
2 分钟
Unity的动画
2025-10-14
2025-10-14
浏览量:加载中...访问次数:加载中...

ok啊又是unity系列的文章,今天来讲动画 今天太累了,改日再写 先写个脚本吧

玩家控制脚本#

PlayerController.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class PlayerController : MonoBehaviour
{
private Animator ani;
public int speed = 2;
void Start()
{
ani=GetComponent<Animator>(); // 获取组件
}
void Update()
{
float vertical=Input.GetAxis("Vertical"); // 获取轴 垂直
float horizontal = Input.GetAxis("Horizontal"); // 获取轴 水平
Vector3 dir=new Vector3(horizontal,0,vertical); // 三维向量
if(dir!=Vector3.zero) // 如果三维向量不等于0
{
transform.rotation=Quaternion.LookRotation(dir); // 先转向
//transform.Translate(Vector3.forward*speed*Time.deltaTime); // 移动 速度乘以时间,这里注释掉是因为用下面的
ani.SetBool("Walk",true); // 设置布尔 播放走路动画 以实际动画名称为准
}
else{
ani.SetBool("Walk",false); // 同上 以实际动画名称为准
}
}
}

动画控制脚本#

PlayerController.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Anime : MonoBehaviour
{
private Animation ani;
void Start()
{
ani=transform.GetChild(0).GetComponent<Animation>(); // 先获取子元素的组件
}
void Update()
{
}
public void OnTriggerEnter(Collider other) // 触碰到触发器
{
ani.Play("open door"); // 播放动画 以实际动画名称为准
}
public void OnTriggerExit(Collider other) // 离开触发器
{
ani.Play("close door"); // 播放动画 以实际动画名称为准
}
}

注意事项#

Player飞了怎么办?#

刚体的 Constraints 中勾选“冻结旋转XYZ轴”

动画卡卡的怎么办?#

动画器的过渡 中取消勾选“有退出时间”


文章编辑:@鈴奈咲桜

Unity的动画
https://blog.sakura.ink/posts/unity_animetor/
作者
鈴奈咲桜
发布于
2025-10-14
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时