unity2D游戏开发03状态控制

news2025/1/10 14:05:21

多态和动画

建立player-idle动画,取玩家最后两个图片

在这里插入图片描述

在这里插入图片描述

选中playcontroller控制器

在这里插入图片描述

将玩家动画拖进去

在这里插入图片描述

右键player-idle,选择set as layer Default state

在这里插入图片描述

在这里插入图片描述

右键点击Any State ,点击Make Transition

在这里插入图片描述

在这里插入图片描述

结果

在这里插入图片描述

动画参数

动画参数是动画控制器定义的变量,点击Parameters,再选择Int

在这里插入图片描述

重命名为Animator

在这里插入图片描述

点击Any到player-walk-east动画状态的白色的线,再在Inspector面板设置属性如下,Has Exit Time 如果不取消,动画会播放到Exite Time文本指定的百分比位置,才会播放下一个动画。

在这里插入图片描述

点击Conditions下的加号

在这里插入图片描述

设置如下

在这里插入图片描述

修改MovementController脚本

在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using System.Security.Cryptography;
using UnityEngine;

public class MovementController : MonoBehaviour
{
    // Start is called before the first frame update

    public float movementSpeed = 3.0f;
    Vector2 movement = new Vector2();
    //用来存储Animator的引用
    Animator animator;

    string animationState = "AnimationState";

    Rigidbody2D rb2D;

    enum CharStates
    {
        walkEast=1,
        walkWest=3,
        walkSouth=2,
        walkNorth=4,
        idleSouth=5
    }

    void Start()
    {
        //获取GameObject中Animator组件的引用
        animator = GetComponent<Animator>();
        rb2D = GetComponent<Rigidbody2D>();
    }

    // Update is called once per frame
    void Update()
    {
        UpdateState();
    }

    //unity引擎以固定时间调用
    private void FixedUpdate()
    {
        MoveCharacter();
    }
    //玩家移到代码
    private void MoveCharacter()
    {
        movement.x = Input.GetAxisRaw("Horizontal");
        movement.y = Input.GetAxisRaw("Vertical");
        movement.Normalize();
        rb2D.velocity = movement * movementSpeed;
    }
    //更新动画状态机
    private void UpdateState()
    {
        if (movement.x > 0)
        {
            //告诉animator 将状态进行转换,第一个是unity编辑器创建的动画参数AnimationState,另外一个是AnimationState的实际值
            animator.SetInteger(animationState, (int)CharStates.walkEast);
        }
        else if (movement.x < 0)
        {
            animator.SetInteger(animationState, (int)CharStates.walkWest);
        }
        else if (movement.y > 0)
        {
            animator.SetInteger(animationState, (int)CharStates.walkNorth);
        }
        else if (movement.y < 0)
        {
            animator.SetInteger(animationState, (int)CharStates.walkSouth);
        }
        else {
            animator.SetInteger(animationState, (int)CharStates.idleSouth);
        }
    }

}

修改每个白色转换箭头,Conditions的值按照枚举的来设置

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

将每个player-walk动画速度设置为0.6

在这里插入图片描述

点击播放,即可通过W,A,D,S移到玩家

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1947274.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Matlab arrayfun 与 bsxfun——提高编程效率的利器!

许多人知道 MATLAB 向量化编程&#xff0c;少用 for 循环 可以提高代码运行效率&#xff0c;但关于代码紧凑化编程&#xff0c; arrayfun 与 bsxfun 两个重要函数却鲜有人能够用好&#xff0c;今天针对这两个函数举例说明其威力。 Matlab arrayfun 概述 arrayfun 是 Matlab …

one-api 源码调试配置

本文主要介绍通过 VSCode 调试 one-api 源码。 一、环境配置 1.1 VSCode 和 one-api 安装 首先,确保已经安装了 VSCode(下载链接)和 one-api 源码(下载链接)已下载并安装了依赖 1.2 安装 Go 插件 在 VSCode 中,安装 Go 插件。 1.3 安装 dlv 调试包 可以通过下载源码…

EEtrade:现货黄金盈利计算方法

现货黄金交易作为一种极具吸引力的投资方式&#xff0c;其盈利计算涉及多个关键因素&#xff0c;投资者需深入理解这些因素&#xff0c;才能准确评估交易结果&#xff0c;并制定科学的投资策略。 一、现货黄金基本盈利计算&#xff1a; 利润公式&#xff1a; 利润 (收盘价 -…

docker部署mysql8.x版本,编写shell脚本自动部署安装mysql

docker部署mysql8.x版本&#xff0c;编写shell脚本自动部署安装mysql **1.**先自行安装好docker环境&#xff0c;docker的镜像注册中心最好是国内的&#xff0c;例如执行一下命令直接修改docker配置&#xff0c; cat <<EOF > /etc/docker/daemon.json {"regist…

LabVIEW学习-LabVIEW处理带分隔符的字符串从而获取数据

带分隔符的字符串很好处理&#xff0c;只需要使用"分隔符字符串至一维字符串数组"函数或者"一维字符串数组至分隔符字符串"函数就可以很轻松地处理带分隔符地字符串。 这两个函数所在的位置为&#xff1a; 函数选板->字符串->附加字符串函数->分…

在STM32嵌入式中C/C++语言对栈空间的使用

像STM32这样的微控制器在进入main函数之前需要对栈进行初始化。可以说栈是C语言运行时的必要条件。我们知道栈实际上是一块内存空间&#xff0c;那么这块空间都用来存储什么呢&#xff1f;有什么办法能够优化栈空间的使用&#xff1f; 栈空间保存的内容 栈是一个先入后出的数据…

学术研讨 | 区块链网络体系结构研讨会顺利召开

添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 近日&#xff0c;国家区块链技术创新中心组织了“区块链网络体系结构研讨会”&#xff0c;会议面向跨域交互多、计算规模大、数据管理复杂、性能与扩展性要求高等特征的区块链网络的体系结构展开交流研讨&…

ShareDB:构建实时应用从未如此简单

项目介绍 ShareDB 是一个支持多用户实时协作的全栈库&#xff0c;适用于构建各种需要同步数据更新的在线应用&#xff0c;如在线文档编辑器、实时仪表板和多玩家游戏等。 它提供了一套全面的实时同步和多用户协作解决方案&#xff0c;具备异步最终一致性、实时查询订阅、数据库…

Win11 操作(四)g502鼠标连接电脑不亮灯无反应

罗技鼠标连接电脑不亮灯无反应 前言 罗技技术&#x1f4a9;中&#x1f4a9;&#xff0c;贴吧技术神中神&#xff01; 最近买了一个g502&#xff0c;结果买回来直接插上电脑连灯都不亮&#xff0c;问了一下客服。客服简单的让我换接口&#xff0c;又是下载ghub之类的&#xf…

ESP8266用AT指令实现连接MQTT

1准备工作 硬件&#xff08;ESP8266&#xff09;连接电脑 硬件已经烧入了MQTT透传固件 2实现连接 2-1&#xff08;进入AT模式&#xff09; 打开串口助手发送如下指令 AT 2-2&#xff08;复位&#xff09; ATRST 2-3&#xff08;开启DHCP&#xff0c;自动获取IP&#x…

SpringBoot+Vue(3)Excel的在线预览

一、思路 在Spring Boot和Vue.js的组合中实现Excel文件的在线预览功能&#xff0c;通常涉及到几个关键步骤&#xff1a;文件上传、文件存储、文件读取、以及通过前端展示Excel内容。由于Excel文件本身不是直接可以在网页上渲染的格式&#xff0c;我们通常需要将Excel文件转换为…

vue3创建vite项目

一、创建vue3 vite项目&#xff1a; 命令行创建&#xff1a;npm create vitelatest vue3-tdly-demo -- --template vue (1)先进入项目文件夹&#xff0c;cd vue3-tdly-demo (2)之后执行&#xff0c; npm install (3)最后运行&#xff0c;npm run dev 将main.js文件内容改成…

ML.NET:一个.NET开源、免费、跨平台的机器学习框架

前言 今天大姚给大家分享一个.NET开源、免费、跨平台&#xff08;支持Windows、Linux、macOS多个操作系统&#xff09;的机器学习框架&#xff1a;ML.NET。并且本文将会带你快速使用ML.NET训练一个属于自己的图像分类模型&#xff0c;对图像进行分类。 ML.NET框架介绍 ML.NET…

计算机网络之网络基础(含图解和知识点思维导图通俗易懂)

绪论​ “一个人在科学探索的道路上&#xff0c;走过弯路&#xff0c;犯过错误&#xff0c;并不是坏事&#xff0c;更不是什么耻辱&#xff0c;要在实践中勇于承认和改正错误。——爱因斯坦”。本章将是网络的第一章&#xff0c;计算机网络是我们计算机行业必须了解并掌握的知识…

Linux中的fopen,fclose,fread,fwrite,fseek相关函数的知识点

这几个函数都是标准的c库函数&#xff0c;在man 2中查找不到&#xff0c;所以我们可以利用man 手册直接查找 对应的open,close,write,fread都是Linux系统内核调用 可移植性&#xff1a;fopen 强过于 open ... fopen 在用户态是缓存的 open 在用户态是没有缓存的 fopen函数 f…

TCP粘包问题详解和解决方案【C语言】

1.什么是TCP粘包 TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;是一种面向连接的、可靠的、基于字节流的传输协议&#xff0c;它保证了数据的可靠性和顺序性。然而&#xff0c;由于TCP是基于字节流而不是消息的&#xff0c;因此在传输过…

javaEE-01-tomcat

文章目录 javaWebTomcat启动 Tomcat 服务器测试服务器是否成功停止tomcat服务器修改服务器的端口号 Idea整合tomcat服务器 javaWeb 所有通过 Java 语言编写可以通过浏览器访问的程序的总称,是基于请求和响应来开发的。 请求: 客户端给服务器发送数据(Request)响应: 服务器给客…

LINUX环境下使用yum安装JDK1.8并配置环境变量

LINUX环境下使用yum安装JDK1.8并配置环境变量 1.查看CentOS自带JDK是否已安装 yum list installed |grep java2.批量卸载JDK rpm -qa | grep java | xargs rpm -e --nodeps3.直接yum安装1.8.0版本openjdk(其他版本请自行修改版本号) yum install java-1.8.0-openjdk* -y4.默…

4 Go语言的操作符

本专栏将从基础开始&#xff0c;循序渐进&#xff0c;由浅入深讲解Go语言&#xff0c;希望大家都能够从中有所收获&#xff0c;也请大家多多支持。 查看相关资料与知识库 专栏地址:Go专栏 如果文章知识点有错误的地方&#xff0c;请指正&#xff01;大家一起学习&#xff0c;…

智慧园区整体一站式解决方案(PPT原件完整版)

软件全套资料部分文档清单&#xff1a; 工作安排任务书&#xff0c;可行性分析报告&#xff0c;立项申请审批表&#xff0c;产品需求规格说明书&#xff0c;需求调研计划&#xff0c;用户需求调查单&#xff0c;用户需求说明书&#xff0c;概要设计说明书&#xff0c;技术解决方…