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混合树的方式,但是其不移动时的朝向该如何定义? 十分简单:移动和不移动之间形成逻辑自锁 详细说明思路就是再创建一个简单2d混合树 定义其N方向的idle 并用lastDirc二维向量保存玩家输入,当玩家输…...
pytorch 和tensorflow loss.item()` 只能用于只有一个元素的张量. 防止显存爆炸
loss.item() 是 PyTorch 中的一个方法,它用于从一个只包含单个元素的张量(tensor)中提取出该元素的值,并将其转换为一个 Python 标量(即 int 或 float 类型)。这个方法在训练神经网络时经常用到,…...
链表刷题|判断回文结构
题目来自于牛客网,本文章仅记录学习过程的做题理解,便于梳理思路和复习 我做题喜欢先把时间复杂度和空间复杂度放一边,先得有大概的解决方案,最后如果时间或者空间超了再去优化即可。 思路一:要判断是否为回文结构则…...
海盗王集成网关和商城服务端功能golang版
之前用golang把海盗王的商城服务端和网关服务端都重写了一次。 后来在同时开启网关和商城服务时,发现窗口数量有点多,有时要找到商城窗口比较麻烦。 既然2个都是用golang govcl写的,是不是可以集成到一起,方便使用呢?…...
SCI 中科院分区中位于4区,JCR分区位于Q2 是什么水平?
环境: 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,还有另外一种叫做mlxup。 NVIDIA 提供了两种固件工具来更新和查询适配器固件: MLXUP - 固件更新和查询实用程序。该实用程序允许扫描服务器计算机以查找可用的 NVIDIA 适配器,并指示每个适配器是否需要…...
《Shader入门精要》透明效果
代码以及实例图可以看github :zaizai77/Shader-Learn: 实现一些书里讲到的shader 在实时渲染中要实现透明效果,通常会在渲染模型时控制它的透明通道(Alpha Channel)。当开启透明混合后,当一个物体被渲染到屏幕上时&…...
Linux之SELinux与防火墙
一、SELinux的说明 开发背景与目的: SELinux由美国国家安全局(NSA)开发,旨在避免资源的误用。传统的Linux基于自主访问控制(DAC),通过判断进程所有者/用户组与文件权限来控制访问,对…...
深度学习使用LSTM实现时间序列预测
大家好,LSTM是一种特殊的循环神经网络(RNN)架构,它被设计用来解决传统RNN在处理长序列数据时的梯度消失和梯度爆炸问题,特别是在时间序列预测、自然语言处理和语音识别等领域中表现出色。LSTM的核心在于其独特的门控机…...
Vue第一篇:组件模板总结
前言 本文希望读者有一定的Vue开发经验,样例采用vue中的单文件组件,也是我的个人笔记,欢迎一起进步 必须有根元素 这是一个最简单的vue单文件组件,<template></template>被称为模板,模板中必须有一个根元素…...
时钟使能、
时钟使能 如果正确使用,时钟使能能够显著地降低系统功耗,同时对面积或性能的影响极小。但是如果不正确地使用时钟使能, 可能会造成下列后果: • 面积增大 • 密度减小 • 功耗上升 • 性能下降 在许多使用大量控制集的…...
1. Autogen官网教程 (Introduction to AutoGen)
why autogen The whole is greater than the sum of its parts.(整体的功能或价值往往超过单独部分简单相加的总和。) -Aristotle autogen 例子 1. 导入必要的库 首先,导入os库和autogen库中的ConversableAgent类。 import os from autogen import Conversable…...
开源账目和账单
开源竞争: 开源竞争(当你无法彻底掌握技术的时候,你就开源这个技术,让更多的人了解这个技术,形成更多的技术依赖,你会说这不就是在砸罐子吗?一个行业里面总会有人砸罐子,你不如先砸…...
vue2面试题10|[2024-11-24]
问题1:vue设置代理 如果你的前端应用和后端API服务器没有运行在同一个主机上,你需要在开发环境下将API请求代理到API服务器。这个问题可以通过vue.config.js中的devServer.proxy选项来配置。 1.devServer.proxy可以是一个指向开发环境API服务器的字符串&…...
c语言与c++到底有什么区别?
成长路上不孤单😊😊😊😊😊😊 【14后😊///C爱好者😊///持续分享所学😊///如有需要欢迎收藏转发///😊】 今日分享关于c语言与c区别的相关内容! 关…...
云计算-华为HCIA-学习笔记
笔者今年7月底考取了华为云计算方向的HCIE认证,回顾从IA到IE的学习和项目实战,想整合和分享自己的学习历程,欢迎志同道合的朋友们一起讨论! 第二章:服务器基础 服务器是什么? 服务器本质上就是个性能超强的…...
优先算法 —— 双指针系列 - 复写零
目录 1. 复写零 2. 算法原理 一般情况下 改为就地操作:从左到右(错误) 从右到左 总结一下解决方法: 如何找到最后一个复写的数 特殊情况 完整步骤: 3. 代码 1. 复写零 题目链接:1089. 复写零 - 力…...
初识Linux—— 基本指令(下)
前言: 本篇继续来学习Linux的基础指令,继续加油!!! 本篇文章对于图片即内容详解,已同步到本人gitee:Linux学习: Linux学习与知识讲解 Linux指令 1、查看文件内容的指令 cat cat 查看文件…...
esayexcel进行模板下载,数据导入,验证不通过,错误信息标注在excel上进行返回下载
场景:普普通通模板下载,加数据导入,分全量和增量,预计20w数据,每一条数据校验,前后端代码贴上(代码有删改,关键代码都有,好朋友们自己取舍,代码一股脑贴上了&…...
服务器数据恢复—raid5阵列热备盘上线失败导致EXT3文件系统不可用的数据恢复案例
服务器数据恢复环境: 两组分别由4块SAS硬盘组建的raid5阵列,两组阵列划分的LUN组成LVM架构,格式化为EXT3文件系统。 服务器故障: 一组raid5阵列中的一块硬盘离线。热备盘自动上线替换离线硬盘,但在热备盘上线同步数据…...
深度学习篇---NVIDIA DeepStream
NVIDIA DeepStream 是一个功能强大的流媒体分析工具包,专为基于 AI 的多传感器处理、视频、音频和图像理解而设计。你可以把它想象成一个“视觉 AI 应用的乐高工厂”,它把视频解码、AI 推理、目标追踪这些复杂的“零件”,巧妙地组合成一条高效…...
Kubernetes性能优化指南:提升集群运行效率
Kubernetes性能优化指南:提升集群运行效率 引言 在生产环境中,Kubernetes集群的性能优化是一个持续的过程。通过优化,可以提高资源利用率、减少响应时间、提升用户体验。 今天就来分享一下Kubernetes性能优化的经验和方法。 资源优化 Pod资源…...
HashMap 源码解析 底层原理 面试如何回答
HashMap 源码解析 底层原理 面试如何回答 一、参考资料 【Java视频教程,java入门神器(附300道Java面试题剖析)】 https://www.bilibili.com/video/BV1PY411e7J6/?p172&share_sourcecopy_web&vd_source855891859b2dc554eace9de3f28b4…...
多版本滤波算法对比试验
一、设计版本V1.0资源二、设计版本V2.0资源和仿真三、设计版本V3.0资源和仿真四、设计优化V4.0设计优化V4.0是在V3.0基础上将inline off去掉后,资源立马下降。总结:V1.0版本,很奇怪,按道理,资源要多些,但是…...
恒玄bes2600WM+DSP蓝牙耳机项目
bes2600WMDSP蓝牙耳机项目...
Kubernetes事件驱动架构实践:构建响应式微服务系统
Kubernetes事件驱动架构实践:构建响应式微服务系统 一、事件驱动架构概述 事件驱动架构是一种基于事件发布/订阅模式的分布式系统设计方法。在Kubernetes中实现事件驱动架构可以实现松耦合、高可扩展的微服务系统。 1.1 事件驱动模式 模式说明适用场景发布/订阅…...
网站内容创作团队如何利用多模型聚合平台提升效率
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 网站内容创作团队如何利用多模型聚合平台提升效率 对于网站内容运营或编辑团队而言,持续产出高质量、多样化的内容是一…...
从被动应答到自我进化,深度拆解Agent核心技术范式的四年演进之路
从2023年大模型爆发至今,智能Agent技术只用了短短四年时间,就完成了数次颠覆性的迭代升级。从最初只会被动应答的聊天增强工具,到如今能够自主规划复杂任务、持续自我进化的数字员工,Agent的技术形态、架构逻辑和落地范式都发生了…...
ChatGPT账号封禁真相大起底(附OpenAI官方政策逐条对照表):92%用户因这4个隐藏操作永久失权
更多请点击: https://codechina.net 第一章:ChatGPT账号被封怎么办 当您的ChatGPT账号突然无法登录、提示“Account suspended”或跳转至封禁通知页面时,这通常意味着OpenAI已依据其《使用条款》对账号采取了限制措施。常见触发原因包括&…...
使用正则表达式str.split(“\\W+“)拆分句子
正则表达式 String sentence "The quick brown fox... jumps over the lazy dog?"; String[] words sentence.split("\\W"); // \\W怎么理解?/*打印words会输出: The quick brown fox jumps over the lazy dog */在 Java 中&am…...
