👨💻个人主页:@元宇宙-秩沅
hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!
本文由 秩沅 原创
收录于专栏 unity实战入门
在游戏中我们在做控制游戏物体移动时会碰到以下常见的几种情况:
@[TOc]
①移动的速度无法加以匀速控制
那我们就用Time.delaTime
图片:
②左右的转向动画无法和左右按键相同
那我们就用Input监听按钮来实现
animi.CrossFade()方法重载参数越小,动画过渡越快,当然也要取消Has Exit time 的勾选
③动画无法和人物相应的方向所匹配
那我们先判断游戏人物的朝向,gameObject.transform.localScale.x
上代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//--------------------------------
//--------创建人:秩沅-----------
//--------功能作用:实现游戏对象移动和相应动画的切换 ----------
//---------------------------------
public class Move: MonoBehaviour
{
float a,b,S;
Animator anim;
// Start is called before the first frame update
void Start()
{
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
S = Input.GetAxisRaw("Horizontal");
a += S * Time.deltaTime;
b = gameObject.transform.localPosition.y;
gameObject.transform.localPosition = new Vector2(a, b);
//行走动画的切换,右方
if (Input.GetKeyDown(KeyCode.D))
{
//当按键的方向和它的朝向不一致的时候,即可变向
if (gameObject.transform.localScale.x < 0)
{
float c, d;
c = -gameObject.transform.localScale.x;
d = gameObject.transform.localScale.y;
gameObject.transform.localScale = new Vector2(c, d);
}
anim.CrossFade("Walk",0.00000001f);
}
else if(Input.GetKeyUp(KeyCode.D))
{
anim.CrossFade("Idel", 0.00000001f);
}
//行走动画的切换,左方
if (Input.GetKeyDown(KeyCode.A))
{
if (gameObject.transform.localScale.x > 0)
{
float c, d;
c = -gameObject.transform.localScale.x;
d = gameObject.transform.localScale.y;
gameObject.transform.localScale = new Vector2(c, d);
}
anim.CrossFade("Walk", 0.00000001f);
}
else if (Input.GetKeyUp(KeyCode.A))
{
anim.CrossFade("Idel", 0.00000001f);
}
}
}
你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!