当前位置: 首页 > news >正文

Unity2D 关于N方向俯视角 中 角色移动朝向的问题

        通常对俯视角2d游戏的角色移动我们使用简单2d混合树的方式,但是其不移动时的朝向该如何定义?

        十分简单:移动和不移动之间形成逻辑自锁

       详细说明思路就是再创建一个简单2d混合树 定义其N方向的idle 并用lastDirc二维向量保存玩家输入,当玩家输入为0时,就不进改变lastDirc的函数块,用该变量去改变idle混合树状态即可

        

请看整体代码

using System;
using UnityEngine;[Serializable]
public class PlayerCtrl : MonoBehaviour {private static PlayerCtrl instance;public static PlayerCtrl Instance => instance;public Vector2 moveDir;public Vector2 lastDir;[SerializeField]private float moveSpeed;public Rigidbody2D playerRb;private void Awake() {if (instance == null){ instance = this;}else{ Destroy(instance);}playerRb = GetComponent<Rigidbody2D>();}void Start() {moveSpeed = 0.1f;}void Update() {GetInput();}private void FixedUpdate() {FixedMove();}public void GetInput(){moveDir = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical"));}private void FixedMove() {playerRb.MovePosition((Vector2)this.playerRb.position + moveDir.normalized * moveSpeed);}
}

        

using UnityEngine;public class PlayerAm : MonoBehaviour
{  private Animator playerAm;private void Awake() {playerAm = GetComponent<Animator>();}// Start is called once before the first execution of Update after the MonoBehaviour is createdvoid Start(){}// Update is called once per framevoid Update(){PlayerAmCtrl();}public void PlayerAmCtrl(){if (PlayerCtrl.Instance.moveDir != Vector2.zero) {PlayerCtrl.Instance.lastDir = PlayerCtrl.Instance.moveDir;playerAm.SetBool("isMoving", true);playerAm.SetFloat("X", PlayerCtrl.Instance.moveDir.x);playerAm.SetFloat("Y", PlayerCtrl.Instance.moveDir.y);}else {playerAm.SetBool("isMoving", false);playerAm.SetFloat("Ix", PlayerCtrl.Instance.lastDir.x);playerAm.SetFloat("Iy", PlayerCtrl.Instance.lastDir.y);}}
}

        为什么这么简单的事情还需要记录呢??

        因为我一直在寻找不这么做就可以解决的方式,但是似乎涉及到了这个2d简单混合树后再只想通过代码去解决是很难的

        如果是简单的一维向量锁方向就行了,希望大佬看到此篇后有更加简单的方法私信我

相关文章:

Unity2D 关于N方向俯视角 中 角色移动朝向的问题

通常对俯视角2d游戏的角色移动我们使用简单2d混合树的方式,但是其不移动时的朝向该如何定义&#xff1f; 十分简单&#xff1a;移动和不移动之间形成逻辑自锁 详细说明思路就是再创建一个简单2d混合树 定义其N方向的idle 并用lastDirc二维向量保存玩家输入&#xff0c;当玩家输…...

pytorch 和tensorflow loss.item()` 只能用于只有一个元素的张量. 防止显存爆炸

loss.item() 是 PyTorch 中的一个方法&#xff0c;它用于从一个只包含单个元素的张量&#xff08;tensor&#xff09;中提取出该元素的值&#xff0c;并将其转换为一个 Python 标量&#xff08;即 int 或 float 类型&#xff09;。这个方法在训练神经网络时经常用到&#xff0c…...

链表刷题|判断回文结构

题目来自于牛客网&#xff0c;本文章仅记录学习过程的做题理解&#xff0c;便于梳理思路和复习 我做题喜欢先把时间复杂度和空间复杂度放一边&#xff0c;先得有大概的解决方案&#xff0c;最后如果时间或者空间超了再去优化即可。 思路一&#xff1a;要判断是否为回文结构则…...

海盗王集成网关和商城服务端功能golang版

之前用golang把海盗王的商城服务端和网关服务端都重写了一次。 后来在同时开启网关和商城服务时&#xff0c;发现窗口数量有点多&#xff0c;有时要找到商城窗口比较麻烦。 既然2个都是用golang govcl写的&#xff0c;是不是可以集成到一起&#xff0c;方便使用呢&#xff1f;…...

SCI 中科院分区中位于4区,JCR分区位于Q2 是什么水平?

环境&#xff1a; ACM Transactions on Interactive Intelligent Systems 《Acm Transactions On Interactive Intelligent Systems》(《交互式智能系统上的 Acm 事务》)是一本由ASSOC COMPUTING MACHINERY (ACM)出版的Computer Interaction-Computer Science-Human学术刊物&…...

微知-Mellanox网卡的另外一种升级方式mlxup?(mlxup -d xxx -i xxx.bin)

背景 一般升级Mellanox网卡使用flint&#xff0c;还有另外一种叫做mlxup。 NVIDIA 提供了两种固件工具来更新和查询适配器固件&#xff1a; MLXUP - 固件更新和查询实用程序。该实用程序允许扫描服务器计算机以查找可用的 NVIDIA 适配器&#xff0c;并指示每个适配器是否需要…...

《Shader入门精要》透明效果

代码以及实例图可以看github &#xff1a;zaizai77/Shader-Learn: 实现一些书里讲到的shader 在实时渲染中要实现透明效果&#xff0c;通常会在渲染模型时控制它的透明通道&#xff08;Alpha Channel&#xff09;​。当开启透明混合后&#xff0c;当一个物体被渲染到屏幕上时&…...

Linux之SELinux与防火墙

一、SELinux的说明 开发背景与目的&#xff1a; SELinux由美国国家安全局&#xff08;NSA&#xff09;开发&#xff0c;旨在避免资源的误用。传统的Linux基于自主访问控制&#xff08;DAC&#xff09;&#xff0c;通过判断进程所有者/用户组与文件权限来控制访问&#xff0c;对…...

深度学习使用LSTM实现时间序列预测

大家好&#xff0c;LSTM是一种特殊的循环神经网络&#xff08;RNN&#xff09;架构&#xff0c;它被设计用来解决传统RNN在处理长序列数据时的梯度消失和梯度爆炸问题&#xff0c;特别是在时间序列预测、自然语言处理和语音识别等领域中表现出色。LSTM的核心在于其独特的门控机…...

Vue第一篇:组件模板总结

前言 本文希望读者有一定的Vue开发经验&#xff0c;样例采用vue中的单文件组件&#xff0c;也是我的个人笔记&#xff0c;欢迎一起进步 必须有根元素 这是一个最简单的vue单文件组件&#xff0c;<template></template>被称为模板&#xff0c;模板中必须有一个根元素…...

时钟使能、

时钟使能 如果正确使用&#xff0c;时钟使能能够显著地降低系统功耗&#xff0c;同时对面积或性能的影响极小。但是如果不正确地使用时钟使能&#xff0c; 可能会造成下列后果&#xff1a; • 面积增大 • 密度减小 • 功耗上升 • 性能下降 在许多使用大量控制集的…...

1. Autogen官网教程 (Introduction to AutoGen)

why autogen The whole is greater than the sum of its parts.(整体的功能或价值往往超过单独部分简单相加的总和。) -Aristotle autogen 例子 1. 导入必要的库 首先&#xff0c;导入os库和autogen库中的ConversableAgent类。 import os from autogen import Conversable…...

开源账目和账单

开源竞争&#xff1a; 开源竞争&#xff08;当你无法彻底掌握技术的时候&#xff0c;你就开源这个技术&#xff0c;让更多的人了解这个技术&#xff0c;形成更多的技术依赖&#xff0c;你会说这不就是在砸罐子吗&#xff1f;一个行业里面总会有人砸罐子&#xff0c;你不如先砸…...

vue2面试题10|[2024-11-24]

问题1&#xff1a;vue设置代理 如果你的前端应用和后端API服务器没有运行在同一个主机上&#xff0c;你需要在开发环境下将API请求代理到API服务器。这个问题可以通过vue.config.js中的devServer.proxy选项来配置。 1.devServer.proxy可以是一个指向开发环境API服务器的字符串&…...

c语言与c++到底有什么区别?

成长路上不孤单&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a;&#x1f60a; 【14后&#x1f60a;///C爱好者&#x1f60a;///持续分享所学&#x1f60a;///如有需要欢迎收藏转发///&#x1f60a;】 今日分享关于c语言与c区别的相关内容&#xff01; 关…...

云计算-华为HCIA-学习笔记

笔者今年7月底考取了华为云计算方向的HCIE认证&#xff0c;回顾从IA到IE的学习和项目实战&#xff0c;想整合和分享自己的学习历程&#xff0c;欢迎志同道合的朋友们一起讨论&#xff01; 第二章&#xff1a;服务器基础 服务器是什么&#xff1f; 服务器本质上就是个性能超强的…...

优先算法 —— 双指针系列 - 复写零

目录 1. 复写零 2. 算法原理 一般情况下 改为就地操作&#xff1a;从左到右&#xff08;错误&#xff09; 从右到左 总结一下解决方法&#xff1a; 如何找到最后一个复写的数 特殊情况 完整步骤&#xff1a; 3. 代码 1. 复写零 题目链接&#xff1a;1089. 复写零 - 力…...

初识Linux—— 基本指令(下)

前言&#xff1a; 本篇继续来学习Linux的基础指令&#xff0c;继续加油&#xff01;&#xff01;&#xff01; 本篇文章对于图片即内容详解&#xff0c;已同步到本人gitee&#xff1a;Linux学习: Linux学习与知识讲解 Linux指令 1、查看文件内容的指令 cat ​ cat 查看文件…...

esayexcel进行模板下载,数据导入,验证不通过,错误信息标注在excel上进行返回下载

场景&#xff1a;普普通通模板下载&#xff0c;加数据导入&#xff0c;分全量和增量&#xff0c;预计20w数据&#xff0c;每一条数据校验&#xff0c;前后端代码贴上&#xff08;代码有删改&#xff0c;关键代码都有&#xff0c;好朋友们自己取舍&#xff0c;代码一股脑贴上了&…...

服务器数据恢复—raid5阵列热备盘上线失败导致EXT3文件系统不可用的数据恢复案例

服务器数据恢复环境&#xff1a; 两组分别由4块SAS硬盘组建的raid5阵列&#xff0c;两组阵列划分的LUN组成LVM架构&#xff0c;格式化为EXT3文件系统。 服务器故障&#xff1a; 一组raid5阵列中的一块硬盘离线。热备盘自动上线替换离线硬盘&#xff0c;但在热备盘上线同步数据…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用

1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

html-<abbr> 缩写或首字母缩略词

定义与作用 <abbr> 标签用于表示缩写或首字母缩略词&#xff0c;它可以帮助用户更好地理解缩写的含义&#xff0c;尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时&#xff0c;会显示一个提示框。 示例&#x…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...