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

牡丹江百姓网免费发布信息seo国外推广软件

牡丹江百姓网免费发布信息,seo国外推广软件,直播开放平台抖音,公司展厅布置效果图文章目录 创建导航NavigationAgent2D节点设置目标位置其他文章 创建导航 首先#xff0c;创建一个基本的场景#xff0c;下面的文章讲解了如何创建一个基本的导航场景#xff0c;点击如下链接前往该文章#xff1a; Godot2D角色导航-自动寻路教程 NavigationAgent2D节点 … 文章目录 创建导航NavigationAgent2D节点设置目标位置其他文章 创建导航 首先创建一个基本的场景下面的文章讲解了如何创建一个基本的导航场景点击如下链接前往该文章 Godot2D角色导航-自动寻路教程 NavigationAgent2D节点 创建场景之后我们就来讲一讲NavigationAgent2D这个节点。该节点用于2D的导航代理它将寻路至某个位置并且在寻路的过程中能够躲避障碍物这个障碍物包括静态障碍物和动态障碍物。 躲避动态障碍物使用的是 RVO 防撞算法。 我们可以通过如下代码来获取节点节点的路径要如实填写也就是GetNode的参数。 private NavigationAgent2D navigationAgent;navigationAgent GetNodeNavigationAgent2D(NavigationAgent2D);设置目标位置 使用代理那我们就需要告诉他一个目标位置然后让它告诉我们移动到那个位置的路径这个位置我们可以通过设置TargetPosition属性来告诉我们的NavigationAgent2D节点。当TargetPosition属性被设置为一个特定的2D坐标时导航代理会自动计算并选择路径以选择尽可能快地路径移动到这个目标位置。 一旦TargetPosition被设置会向 NavigationServer 请求一条新的从当前代理位置到TargetPosition的导航路径。然后我们可以通过这个路径使该节点沿着路径移动以达到指定的目标位置。 该属性接收一个Vector2类型的值我们可以为其赋值代码如下所示 navigationAgent.TargetPositionnew 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.pierceye.com/news/166107/

相关文章:

  • wordpress注册审批汕头网站优化
  • 想招代理去什么网站做网站seo优化的公司
  • 网站制作是什么公司建设企业官方网站的流程
  • 深圳哪家网站建设公司好门户网站制作平台
  • 互联网网站模版工作室网站开发
  • 现在从事网站开发如何销售团队
  • 公司网站设计素材淘宝官网首页
  • 建设公司网站的目的seo推广软件下载
  • 排名好的成都网站建设十堰网络销售
  • 网站qq号获取网站运营与建设作业
  • 网站建设要经历哪些步骤建设银行官网学生交费网站
  • 如何注册网站平台怎么免费搭建一个网站
  • 淘宝客网站建设平台怎么获取网站数据做统计数据
  • 做网站找外包公司要要搞清楚什么抖音开放平台是干嘛的
  • 可以中英切换的网站怎么做四川住房建设厅官方网站
  • 网站制作网站设计优客工场 网站开发
  • 微网站建设开发用系统建购物网站
  • 小说网站建立浙江省和住房建设厅网站
  • 网站去掉后缀html代码运行框wordpress6
  • 做问卷的几个网站石家庄建站源码
  • 响应式网站的制作刷排名seo软件
  • 深圳方维网站设计公司做公司网站的
  • 21年网站搭建公司排行榜域名建设网站
  • 建设银行网银官方网站摄影大赛官网
  • 最好网站设计案例php网站开发能挣多钱
  • 长沙网站推广平台西安网站建设 app
  • 如何查网站是哪家公司做的不用付费的正能量软件
  • 上海专业网站制作设计访问网站速度很慢
  • 大概开发一个网站多少钱百度搜索引擎的网址
  • 众筹网站哪家好网站免费推广怎么做