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

建设网站用什么代码写好呢关键词排名推广

建设网站用什么代码写好呢,关键词排名推广,有关房地产开发建设的网站,最先进的深圳网站建设文章目录 创建导航NavigationAgent2D节点设置目标位置其他文章 创建导航 首先,创建一个基本的场景,下面的文章讲解了如何创建一个基本的导航场景,点击如下链接前往该文章: Godot2D角色导航-自动寻路教程 NavigationAgent2D节点 …

文章目录

  • 创建导航
  • NavigationAgent2D节点
  • 设置目标位置
  • 其他文章

创建导航

首先,创建一个基本的场景,下面的文章讲解了如何创建一个基本的导航场景,点击如下链接前往该文章:
Godot2D角色导航-自动寻路教程

NavigationAgent2D节点

创建场景之后,我们就来讲一讲NavigationAgent2D这个节点。该节点用于2D的导航代理,它将寻路至某个位置,并且在寻路的过程中能够躲避障碍物,这个障碍物包括静态障碍物和动态障碍物。
躲避动态障碍物使用的是 RVO 防撞算法。
我们可以通过如下代码来获取节点,节点的路径要如实填写,也就是GetNode的参数。

private NavigationAgent2D navigationAgent;navigationAgent = GetNode<NavigationAgent2D>("NavigationAgent2D");

设置目标位置

使用代理,那我们就需要告诉他一个目标位置,然后让它告诉我们移动到那个位置的路径,这个位置我们可以通过设置TargetPosition属性来告诉我们的NavigationAgent2D节点。当TargetPosition属性被设置为一个特定的2D坐标时,导航代理会自动计算并选择路径,以选择尽可能快地路径移动到这个目标位置。

一旦TargetPosition被设置,会向 NavigationServer 请求一条新的从当前代理位置到TargetPosition的导航路径。然后,我们可以通过这个路径,使该节点沿着路径移动,以达到指定的目标位置。

该属性接收一个Vector2类型的值,我们可以为其赋值,代码如下所示:

navigationAgent.TargetPosition=new Vector2(500.0f, 200.0f);

这样或许有些麻烦,因为我们需要打节点名,再打属性名,我们可以使用属性来对其进行一次封装,如下所示:

	public Vector2 MovementTarget{get { return navigationAgent.TargetPosition; }set { navigationAgent.TargetPosition = value; }}

需要注意的是,之前我们说过了,TargetPosition被设置后,会向 NavigationServer 请求一条新的从当前代理位置到TargetPosition的导航路径。而只有在第一帧物理模拟,NavigationServer才可以进行同步,而在第一帧物理模拟之前,导航服务器是无法正常同步的。

这意味着,我们如果直接在_Ready()方法中设置,是会导致错误的,因为_Ready方法会在物理模拟之前执行。此时导航服务器尚未初始化。导航服务器需要先完成初始化和同步,才能够有效地进行导航操作。

所以,我们使用异步等待的方法,来等待第一帧物理模拟,以便导航服务器可以同步。

我们通过使用 async 关键字来声明异步方法。异步方法可以在执行耗时操作时,使程序能够在此期间继续执行其他工作,而不会阻塞线程。这表示我们可以在异步方法内部编写一些长时间运行的操作或需要等待的异步操作。比如说,我们一直等待,直到第一帧物理模拟,然后再为TargetPosition赋值。具体代码如下所示:

	private async void ActorSetup(){// 等待第一帧物理模拟,以便导航服务器可以同步。await ToSignal(GetTree(), SceneTree.SignalName.PhysicsFrame);// 现在导航网格不再为空,可以设置移动目标。MovementTarget = _movementTargetPosition;}

在 ActorSetup() 方法中,我们使用了 await 关键字来等待第一帧物理模拟开始的型号。这意味着代码会暂停执行,直到接收到 PhysicsFrame 信号后才会继续执行下面的代码。

ToSignal 方法,该方法用于监听指定节点的信号。它返回一个 SignalAwaiter对象,配置完成时为指定的节点发出了指定的信号。
ToSignal 方法的参数有两个:

  • source:要监听信号的节点对象。
  • signal:要监听的信号的名称。

而GetTree方法,会返回包含此节点的 SceneTree。

然后我们调用该方法,代码如下所示:

Callable.From(ActorSetup).CallDeferred();

首先,通过使用 Callable.From() 方法,将方法 ActorSetup 转换为一个可调用对象。

接下来,使用 CallDeferred 方法对可调用对象进行延迟调用。延迟调用意味着该方法将在空闲帧期间调用,而不会立即执行。延迟调用的作用是将方法推迟到稍后的时间点执行,以便其他任务有机会执行。CallDeferred 方法可以接收参数,这些参数应与方法的参数列表相匹配。在调用时,传递的参数将作为对应方法的实际参数进行使用。
在这里插入图片描述

另外,我们设置了目标位置后,还需要做其他的工作,这就与Unity有所不同,Unity设置好目标后,就可以自动的向着目标点移动,而在Godot中,我们需要在代码中,自动编写移动逻辑,设置了目标点后,只是让引擎来帮你计算到目标点的路径而已,并不帮你移动。移动代码,我们要自己做。

其他文章

关于信号的讲解可以查看如下文章:

Godot信号教程(使用C#语言)

http://www.hkea.cn/news/939184/

相关文章:

  • 做网站如何适应分辨率网站分析培训班
  • 现在币圈有那些私募网站做的好百度推广账号登陆入口
  • 旅游网站图片营销公司排名
  • 做服务器的网站都有哪些搜狗关键词排名此会zjkwlgs
  • php动态网站开发 唐四薪 答案b站引流推广网站
  • 长沙3天2晚自由行攻略论述搜索引擎优化的具体措施
  • 外汇局网站做结汇申报被逆冬seo课程欺骗了
  • 网站运营配置免费网站在线观看人数在哪直播
  • 什么网站做一手房好系统优化的例子
  • wordpress 插入wordseo排名点击工具
  • 网站推广易网宣seo的主要分析工具
  • 安徽网站定制最大免费广告发布平台
  • 怎么查网站有没有做404公司宣传网页怎么做
  • 靠谱营销网站开发选哪家seo的优点和缺点
  • 企业网站建设论文文献综述百度推广的广告真实可信吗
  • 企业网站优化方式广州最新消息今天
  • 旅游网站开发的意义seo优化方案案例
  • 山东做网站的公司seo数据分析哪些方面
  • 做网站用哪几个端口 比较好百度贴吧官网网页
  • 弹幕网站是怎么做的百度在线翻译
  • 独立网站域名代发关键词包收录
  • 如何建立门户网站百度可以发布广告吗
  • 网站开发毕设文献郑州网站优化顾问
  • 青海建设银行的官方网站自己制作网页的网站
  • 网站建设的图片叠加步骤过程2021年搜索引擎排名
  • 网站链接到邮箱怎么做搜索引擎推广试题
  • 十堰城市建设网站制作自己的网站
  • 传媒网站建设公司深圳百度seo优化
  • 公司需要网站 该怎么做公司推广咨询
  • 高中男女做那个视频网站seo做的好的网站