【unity每日一记】--控制游戏人物移动的细节

简介: 【unity每日一记】--控制游戏人物移动的细节

在这里插入图片描述

👨‍💻个人主页:@元宇宙-秩沅

hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

本文由 秩沅 原创

收录于专栏 unity实战入门

在游戏中我们在做控制游戏物体移动时会碰到以下常见的几种情况:

@[TOc]
在这里插入图片描述

①移动的速度无法加以匀速控制

那我们就用Time.delaTime
图片:
Alt

②左右的转向动画无法和左右按键相同

那我们就用Input监听按钮来实现
Alt
animi.CrossFade()方法重载参数越小,动画过渡越快,当然也要取消Has Exit time 的勾选
Alt

③动画无法和人物相应的方向所匹配

那我们先判断游戏人物的朝向,gameObject.transform.localScale.x
Alt

上代码


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);
        }

    }
}

你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!

目录
相关文章
|
4月前
|
存储 自然语言处理 监控
【Unity 实用工具篇】| 游戏多语言解决方案,官方插件Localization 实现本地化及多种语言切换
Unity的多语言本地化是一个很实用的功能,它可以帮助游戏支持多种语言,让不同语言的玩家都能够更好地体验游戏。 而实现本地化的方案也有很多种,各个方案之间也各有优劣,后面也会对多个方案进行介绍学习。 本文就来介绍一个专门作用于多语言本地化的Unity官方插件:Localization 。 这个插件方便进行游戏的多语言本地化,让游戏支持多种语言,下面就来看看该插件的使用方法吧!
|
3月前
|
定位技术 C# 图形学
Unity和C#游戏编程入门:创建迷宫小球游戏示例
Unity和C#游戏编程入门:创建迷宫小球游戏示例
72 2
|
8月前
|
开发框架 Java .NET
《unity游戏优化》第8章内存优化
《unity游戏优化》第8章内存优化
|
4月前
|
运维 API C#
【Unity游戏破解】外挂原理分析
【Unity游戏破解】外挂原理分析
156 0
【Unity游戏破解】外挂原理分析
|
4月前
|
vr&ar 图形学
【Unity 3D】VR飞机起飞喷火游戏案例实战(附源码和演示视频 超详细)
【Unity 3D】VR飞机起飞喷火游戏案例实战(附源码和演示视频 超详细)
52 0
|
4月前
|
图形学
【Unity 3D】3D游戏跑酷小子实战教学(附源码和步骤 超详细)
【Unity 3D】3D游戏跑酷小子实战教学(附源码和步骤 超详细)
114 0
|
4月前
|
C# 图形学
【Unity】2D游戏-愤怒的小鸟教学实战(附源码和实现步骤 超详细)
【Unity】2D游戏-愤怒的小鸟教学实战(附源码和实现步骤 超详细)
150 1
|
4月前
|
C# 图形学
【Unity 3D】游戏对象、添加删除获取组件、预制体Prefabs简介
【Unity 3D】游戏对象、添加删除获取组件、预制体Prefabs简介
75 0
|
4月前
|
人工智能 图形学
Unity——游戏AI实例
Unity——游戏AI实例
|
7月前
|
vr&ar 开发工具 图形学
Unity引擎更新收费模式:从收入分成转向游戏安装量,将会有哪些影响呢
Unity引擎更新收费模式:从收入分成转向游戏安装量,将会有哪些影响呢