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

Godot2D角色导航教程(角色随鼠标移动)

文章目录

  • 运行结果
  • 2D导航概述
  • 开始前的准备
  • 2D导航
    • 创建导航网格
    • 创建角色
  • 其他文章

运行结果

在这里插入图片描述

2D导航概述

Godot为2D和3D游戏提供了多个对象、类和服务器,以便于基于网格或基于网格的导航和路径查找。

说到导航,就得说一下导航网格,导航网格定义了角色可以站立和移动的区域,以其中心为基准。

本文章内容主要以官方文档为主,链接如下:官方文档导航部分

开始前的准备

为你的项目设置合适的窗口大小,如下图所示,宽度和高度自定义。
在这里插入图片描述

2D导航

创建导航网格

接下来,我们就创建一个导航网格。
首先为你的场景添加一个地图,也就是玩家可以走的路,这里随便弄,如下图所示。
在这里插入图片描述
接下来添加一个NavigationRegion2D组件。
在这里插入图片描述
单击该组件,在检查器窗口中,新建一个Navigation Polygon。
在这里插入图片描述
接着,点击该属性,在场景中绘制你的导航网格,如下图所致。连接第一个点和最后一个点可以完成导航网格的绘制。
在这里插入图片描述

注意在导航多边形的边缘和碰撞对象之间留出足够的间距,以避免路径跟随的角色在碰撞中反复被卡住。

创建角色

创建一个CharacterBody2D节点。为其添加Sprite2D子节点,为Sprite2D的Texture属性赋值,给他弄一个角色图片,任意即可。为CharacterBody2D添加CollisionShape2D子节点,为其Shape属性添加一个形状。调整大小以契合Sprite2D。
在这里插入图片描述
然后为CharacterBody2D添加NavigationAgent2D节点,最后结果如下图所示:
在这里插入图片描述
为CharacterBody2D节点添加一个MyCharacterBody2D脚本,并为其编写如下内容:

using Godot;public partial class MyCharacterBody2D : CharacterBody2D
{private NavigationAgent2D _navigationAgent;private float _movementSpeed = 200.0f;private Vector2 _movementTargetPosition = new Vector2(500.0f, 200.0f);public Vector2 MovementTarget{get { return _navigationAgent.TargetPosition; }set { _navigationAgent.TargetPosition = value; }}public override void _Ready(){base._Ready();_navigationAgent = GetNode<NavigationAgent2D>("NavigationAgent2D");// These values need to be adjusted for the actor's speed// and the navigation layout._navigationAgent.PathDesiredDistance = 4.0f;_navigationAgent.TargetDesiredDistance = 4.0f;// Make sure to not await during _Ready.Callable.From(ActorSetup).CallDeferred();}public override void _Process(double delta){base._Process(delta);_movementTargetPosition=GetMouseClickPosition();Callable.From(ActorSetup).CallDeferred();}public override void _PhysicsProcess(double delta){base._PhysicsProcess(delta);if (_navigationAgent.IsNavigationFinished()){return;}Vector2 currentAgentPosition = GlobalTransform.Origin;Vector2 nextPathPosition = _navigationAgent.GetNextPathPosition();Velocity = currentAgentPosition.DirectionTo(nextPathPosition) * _movementSpeed;MoveAndSlide();}private async void ActorSetup(){// Wait for the first physics frame so the NavigationServer can sync.await ToSignal(GetTree(), SceneTree.SignalName.PhysicsFrame);// Now that the navigation map is no longer empty, set the movement target.MovementTarget = _movementTargetPosition;}public Vector2 GetMouseClickPosition(){Vector2 mousePosition = GetGlobalMousePosition();return mousePosition;}
}

最终运行结果如下图所示:
在这里插入图片描述

其他文章

Godot实现闪烁效果
Godot信号教程

相关文章:

Godot2D角色导航教程(角色随鼠标移动)

文章目录 运行结果2D导航概述开始前的准备2D导航创建导航网格创建角色 其他文章 运行结果 2D导航概述 Godot为2D和3D游戏提供了多个对象、类和服务器&#xff0c;以便于基于网格或基于网格的导航和路径查找。 说到导航&#xff0c;就得说一下导航网格&#xff0c;导航网格定义…...

论文阅读--Cell-free massive MIMO versus small cells

无蜂窝大规模MIMO与小蜂窝网络 论文信息 Ngo H Q, Ashikhmin A, Yang H, et al. Cell-free massive MIMO versus small cells[J]. IEEE Transactions on Wireless Communications, 2017, 16(3): 1834-1850. 无蜂窝大规模MIMO中没有小区或者小区边界的界定&#xff0c;所有接入…...

【深度学习】UniControl 一个统一的扩散模型用于可控的野外视觉生成

论文&#xff1a;https://arxiv.org/abs/2305.11147 代码&#xff1a;https://github.com/salesforce/UniControl#data-preparation docker快速部署&#xff1a;https://qq742971636.blog.csdn.net/article/details/133129146 文章目录 AbstractIntroductionRelated WorksUniCo…...

使用ChatGPT和MindShow一分钟生成PPT模板

对于最近学校组织的实习答辩&#xff0c;由于时间太短了&#xff0c;而且小编也特别的忙&#xff0c;于是就用ChatGPT结合MindShow一分钟快速生成PPT&#xff0c;确实很实用。只要你跟着小编后面&#xff0c;你也可以快速制作出这个PPT&#xff0c;下面小编就来详细介绍一下&am…...

C#对字典容器Dictionary<TKey, TValue>内容进行XML序列化或反序列化报错解决方法

一、问题描述 在使用C#对字典容器Dictionary<TKey, TValue>内容进行XML序列化报错【System.Exception:“不支持类型 System.Collections.Generic.Dictionary2[[System.String, mscorlib, Version2.0.0.0, Cultureneutral, PublicKeyTokenb77a5c561934e089],[System.Strin…...

【Linux】Linux 之用户管理

Linux 之用户管理 1.Linux 下的用户2.配置文件3.用户管理3.1 useradd3.1.1 创建用户并指定用户 ID3.1.2 指定用户的主目录3.1.3 指定用户的主组 3.2 adduser3.3 userdel3.4 密码文件3.4.1 字段含义解释3.4.2 给用户添加密码 3.5 其他与用户相关的命令 4.修改用户的信息4.1 user…...

NLP:Attention和self-attention的区别

核心思想是根据不同的上下文为不同的信息分配不同的注意力权重 效果&#xff1a; Attention&#xff1a;它允许模型在解码时聚焦于输入的特定部分&#xff0c;从而更好地捕获上下文信息。Self-attention&#xff1a;它帮助模型捕获输入序列内部的关系&#xff0c;无论这些关系…...

Gap Year Plan

Gap Year Plan gap year 几个大方向 健康 60 KG10 新朋友 钱 5W RMB基本常识、社会机制补齐开网店 英语 TOELF日常交流 & 面试 口语Science Research Writing 2nd 课程 科研常识CMU 15-445MIT 6.824CMU 15-721Full Stack OpenDDIA 实习 GSOC 2024 PostgreSQL / …...

厌烦了iPhone默认的热点名称?如何更改iPhone上的热点名称

你对你默认的热点名称感到厌倦了吗&#xff1f;这篇文章是为你准备的。在这里&#xff0c;你可以了解如何轻松更改iPhone上的热点名称。 个人热点会将你的手机数据转换为Wi-Fi信号。手机上的个人热点使用户能够与其他用户共享其蜂窝数据连接。当你在WIFI网络之外时&#xff0c…...

【数据库审计】2023年数据库审计厂家汇总

我们大家都知道数据库审计的重要意义&#xff0c;不仅可以满足等保合规&#xff0c;还能进行风险告警&#xff0c;保障数据安全。那你知道目前市面上数据库审计厂家有哪些吗&#xff1f;这里小编就给大家汇总一下。 2023年数据库审计厂家汇总 1、行云管家 2、安恒信息 3、…...

C#WPF StackPanel布局及Border边框应用实例

本文介绍C#WPF StackPanel布局及Border边框应用实例,通过演示掌握StackPanel布局及Border边框用法,并对对齐方式、边距、尺寸设置、Border的圆角使用作了演示。 具体概念本文不再赘述。 Xaml文件: <Windowx:Class="PropertyDemo.MainWindow"xmlns="htt…...

RabbitMQ-第四种交换机类型

接上文 RabbitMQ-主题模式 1 第四种交换机类型 header:它是根据头部信息来决定的&#xff0c;在我们发送的消息中是可以携带一些头部信息的&#xff0c;类似与HTTP&#xff0c;我们可以根据这些头部信息来决定路由到哪一个消息队列中。 修改配置类内容 Configuration public…...

Redis AOF重写原原理

重写aof之前 appendonly.aof.1.base.aof appendonly.aof.1.incr.aof appendonly.aof.manifest 重写aof 一次 appendonly.aof.2.base.aof 大小变化 appendonly.aof.2.incr.aof 大小o appendonly.aof.manifest 大小不变 AOF文件重写并不是对原文件进行重新整理&#xff0c;而是直…...

es6.x和es7.x如何创建索引?

一、es6.x {"settings": {"number_of_shards": "2","number_of_replicas": "2","max_result_window": 100000},"mappings": {"doc": {"dynamic": "strict","prope…...

《DevOps 精要:业务视角》- 读书笔记(三)

DevOps 精要:业务视角&#xff08;三&#xff09; 第3章 原则3.1 价值流3.2 部署流水线3.3 一切都应存储在版本控制系统中3.4 自动化配置管理3.5 完成的定义3.6 小结 第3章 原则 将原则从实践中分离出来&#xff0c;这是一种很有用的做法。当然了&#xff0c;这两个词分别有着…...

C语言——文件操作_学习笔记

一、引言——为什么使用文件 如果没有文件&#xff0c;我们写的程序的数据是存储在电脑的内存中&#xff0c;如果程序退出&#xff0c;内存回收&#xff0c;数据就丢失了&#xff0c;等再次运行程序&#xff0c;是看不到上次程序的数据的&#xff0c;如果要将数据进行持久化的…...

cap分布式理论

cap 理论 cap是实现分布式系统的思想。 由3个元素组成。 Consistency&#xff08;一致性&#xff09; 在任何对等 server 上读取的数据都是最新版&#xff0c;不会读取出旧数据。比如 zookeeper 集群&#xff0c;从任何一台节点读取出来的数据是一致的。 Availability&…...

asp.net core 如何统一json序列化格式

oldconfig.AllFields Newtonsoft.Json.JsonConvert.SerializeObject(sqlParameters.AllFields);在start.cs文件中 JsonConvert.DefaultSettings new Func<JsonSerializerSettings>(() >{JsonSerializerSettings jsonsetting new JsonSerializerSettings(){Formatt…...

DALL·E 3 ChatGPT-4的梦幻联动

核心内容&#xff1a;DALLE 3 & ChatGPT-4的梦幻联动 hello&#xff0c;我是小索奇&#xff0c;最近DALL结合ChatGPT4的话题逐渐上升了起来&#xff0c;今天就带大家探索一下~ DALLE的主要功能是根据文本描述来生成图片。你可以告诉它一个穿着皮草的西瓜&#xff0c;它就能…...

linux,write:xxx has messages disabled 与 Ubuntu多用户同时登录的问题 ubuntu 20.04

write&#xff1a;xxx has messages disabled 问题 被这问题折磨了好久&#xff0c;搜都搜不到&#xff0c;还是灵机一动想到的。 很多 帖子说&#xff0c;要使用 mesg y用了还是没有用&#xff0c;后面我登录了很多用户&#xff0c;发现只有root用户可以给别的用户使用write…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周&#xff0c;有很多同学在写期末Java web作业时&#xff0c;运行tomcat出现乱码问题&#xff0c;经过多次解决与研究&#xff0c;我做了如下整理&#xff1a; 原因&#xff1a; IDEA本身编码与tomcat的编码与Windows编码不同导致&#xff0c;Windows 系统控制台…...

RocketMQ延迟消息机制

两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数&#xff0c;对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后&#xf…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…...

基于Springboot+Vue的办公管理系统

角色&#xff1a; 管理员、员工 技术&#xff1a; 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能&#xff1a; 该办公管理系统是一个综合性的企业内部管理平台&#xff0c;旨在提升企业运营效率和员工管理水…...

华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)

题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...