Unity--Stealth秘密行动开发(三):玩家移动
程序员文章站
2022-07-13 08:26:32
...
Unity–Stealth秘密行动开发(三):玩家移动
玩家移动通过动画状态机来控制,移动动画使用融合树,通过Speed去控制玩家的动画运动
1:设置成员变量
public static Player _instance;//单例模式
public float moveSpeed = 1;//加速度
public float stopSpeed = 30;//减速度
public float rotateSpeed = 10;//旋转速度
public bool hasKey = false;//是否拥有钥匙
private Animator anim;
private AudioSource audio;
2.Aweak初始化
private void Awake()
{
anim = this.GetComponent<Animator>();
audio = GetComponent<AudioSource>();
_instance = this;
}
3.在Updata中更新玩家的动画
void Update()
{
//控制是否一直按下键--慢走
if (Input.GetKey(KeyCode.LeftShift))
{
anim.SetBool("Sneak", true);
}
else
{
anim.SetBool("Sneak", false);
}
float h = Input.GetAxis("Horizontal");//水平
float v = Input.GetAxis("Vertical"); //垂直
//当键盘前进和左右按下
if(Mathf.Abs(h)>0.1 || Mathf.Abs(v)>0.1)
{
float newSpeed= Mathf.Lerp(anim.GetFloat("Speed"), 3f, moveSpeed * Time.deltaTime);//差值实现--值的改变实现加速度
anim.SetFloat("Speed", newSpeed);//更新现在的速度
Vector3 targeDir = new Vector3(h,0,v);//得到目标方向
//Vector3 nowDir = transform.forward; //当前方向
//float angle= Vector3.Angle(targeDir,nowDir); //1:目标朝向 2.当前朝向----取得两个方向的夹角
//if(angle>180)
//{
// angle = 360 - angle;
// angle = -angle;
//}
//transform.Rotate(Vector3.up * angle * Time.deltaTime*rotateSpeed);//目标角度*时间*速度--控制旋转到某个角度
//通过四元数的差值运算控制转向
Quaternion newRotation = Quaternion.LookRotation(targeDir, Vector3.up);
transform.rotation = Quaternion.Lerp(transform.rotation, newRotation, rotateSpeed * Time.deltaTime);
}
else//键抬起--渐变回初始速度
{
//float newSpeed = Mathf.Lerp(anim.GetFloat("Speed"),0f, moveSpeed * Time.deltaTime);//差值实现--值的改变实现加速度
//anim.SetFloat("Speed", newSpeed);//更新现在的速度
anim.SetFloat("Speed", 0);//直接停止运动
}
//判断动画当前状态是否为走路状态“Locomotion”
if(anim.GetCurrentAnimatorStateInfo(0).IsName("Locomotion"))
{
PlayFootMusic();//播放
}
else
{
StopFootMusic();//停止
}
}
4:播放走路声音
private void PlayFootMusic()
{
if(!audio.isPlaying)
{
audio.Play();
}
}
5.停止走路声音
private void StopFootMusic()
{
if(audio.isPlaying)
{
audio.Stop();
}
}
6.设置共有方法,获取玩家是否有钥匙
public bool isHaskey()
{
return this.hasKey;
}
上一篇: 游戏角色动画:从入门到商用(一)
下一篇: 【游戏算法】2D游戏中聚光灯效果
推荐阅读
-
华为:HMS已成为全球第三大移动应用生态 全球开发者达230万
-
Unity--Stealth秘密行动开发(六):敌人AI
-
Unity--Stealth秘密行动开发(三):玩家移动
-
移动web开发之屏幕三要素_html/css_WEB-ITnose
-
移动web开发之屏幕三要素_html/css_WEB-ITnose
-
Unity--Stealth秘密行动开发(四):通过按键改变物体材质
-
【前端开发实例】HTML 移动端固定悬浮半透明搜索框 -(三)
-
移动web开发之屏幕三要素 - 小火柴的蓝色理想
-
Android studio如何连接三星手机 Android安卓mobile移动开发
-
2020年史上最全移动端Web整理从开发基础到实战(三)