- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经插入了我的 GKBehavior/GKAgent2D/GKComponent 系统来执行一些行为例程,但在修复这个我无法弄清楚的错误时遇到了麻烦。 我先来描述一下: 我当前的实体/组件系统基于苹果的 ECS,其中:1-entitymanager:GKEntity 管理所有组件并包含游戏中的所有实体,并使用 updateWithDelta 进入所有 GKComponentSystems,这些 GKComponentSystems 本身会更新其系统中的每个组件。目前,更新顺序如下:行为>节点>玩家节点>声音>界面>物理2-每个系统都是一个 GKComponentSystem,负责更新其中的所有元素。我有两个名为 GameRenderer 和 GameControls 的 NSViewController 扩展,它们都是 SCNSceneRendererDelegate 的代表,还有一个名为 KBAndTouchDelegate 的自定义协议(protocol),它们分别更新屏幕和控件上的渲染(一旦我的订单更新感觉正确,将更改它以将其合并到 ECS 中)。现在,在行为组件系统中,它更新一个 MoveComponent,其中包含一些用于更新的函数(willUpdate 和 didUpdate)。两者都有一个 2DAgent 位置,该位置首先取自 SCNNode 的位置(从 SCNVector3 转换为 Float2,仅更改 x 和 z 坐标),然后在评估行为算法后反射回节点。以下是更新的片段:
func agentWillUpdate(agent: GKAgent) {
guard let nodeComponent = entity?.componentForClass(SCNNodeComponent.self)
else{
return
}
let nodePos = nodeComponent.node.position
position = float2(Float(nodePos.x), Float(nodePos.z))
}
func agentDidUpdate(agent: GKAgent) {
guard let nodeComponent = entity?.componentForClass(SCNNodeComponent.self)
else{
return
}
let pos = SCNVector3(x: CGFloat(position.x), y: nodeComponent.node.position.y, z: CGFloat(position.y))
print("\(nodeComponent.node.name) changed to \(pos)")
nodeComponent.node.position = pos
}
@override updateWithDeltaTime 例程检查 moveComponent 所有者所在的一方,并将其放入数组中以获得最近的敌人距离并返回敌人。 该行为具有非常低的 maxSpeed 和 maxVelocity 因子。 运行该应用程序,我打印了两个节点的一组 Action ,这两个节点是敌人并监视彼此的位置。敌人的搜索程序运行良好,因为它们以交替的顺序反射(reflect)彼此的位置。结果如下:
Optional("zombie") changed to SCNVector3(x: -20.0, y: 0.0, z: -20.0)
enemy position is: (0.0, 0.0)
Optional("player") changed to SCNVector3(x: 0.0, y: 0.0, z: 0.0)
enemy position is: (-20.0, -20.0)
Optional("zombie") changed to SCNVector3(x: -20.0, y: 0.0, z: 41567.44140625)
enemy position is: (0.0, 0.0)
Optional("player") changed to SCNVector3(x: 0.0, y: 0.0, z: 0.0)
enemy position is: (-20.0, 41567.44140625)
HRTF loaded
Optional("zombie") changed to SCNVector3(x: 30.136764526367188, y: 0.0, z: -20.2421875)
enemy position is: (0.0, 0.0)
Optional("player") changed to SCNVector3(x: 0.0, y: 0.0, z: 0.0)
enemy position is: (30.1367645263672, -20.2421875)
Optional("zombie") changed to SCNVector3(x: -38636.87109375, y: 0.0, z: 15289.939453125)
如果查看“僵尸”的第一个位置,您会发现它从 -20 开始,-20 然后 x 和 z 位置都达到不可能的大值(同样,场景世界中的 x 和 z)。玩家不会移动,因为我没有使用任何控件,只是为了看看僵尸是否能够通过以下 GKBehavior 调用找到玩家
init(targetSpeed: Float, seek: GKAgent, avoid: [GKAgent]){
super.init()
if targetSpeed>0{
setWeight(0.1, forGoal: GKGoal(toReachTargetSpeed: targetSpeed))
setWeight(0.5, forGoal: GKGoal(toSeekAgent: seek))
setWeight(1.0, forGoal: GKGoal(toAvoidAgents: avoid, maxPredictionTime: 1.0))
}
}
上述行为在 MoveComponent 中为僵尸的敌人(玩家)调用。这意味着僵尸会寻找玩家。 谁能告诉我 x 和 z 的这些巨大值到底是什么?僵尸和玩家的距离约为 sqrt(800) 或 28 米。但是僵尸在 x 上移动到 35800 米之外,然后切换回大约 50 米,然后在每一帧来回移动。有一个明确的模式,我不确定这个 GKBehavior 是否使用 A 星,此时概率路线图设置了一些非常奇怪的坐标样本,但我的代码中没有任何标量可以将僵尸移动这么远并将距离翻转回来每一帧都相当正常。
最佳答案
对于任何可能遇到相同问题的人,截至昨天 2016 年 3 月 21 日,Apple 已通过最新的 x-code 7.3 公开更新解决了该问题。
关于swift - 游戏套件 : NPC element is going to very high floating number coordinates and back on update,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35782773/
从 angular 5.1 更新到 6.1 后,我开始从我的代码中收到一些错误,如下所示: Error: ngc compilation failed: components/forms/utils.
我正在学习 Typescript 并尝试了解类型和接口(interface)的最佳实践。我正在玩一个使用 GPS 坐标的示例,想知道一种方法是否比另一种更好。 let gps1 : number[];
type padding = [number, number, number, number] interface IPaddingProps { defaultValue?: padding
这两种格式在内存中保存结果的顺序上有什么区别吗? number = number + 10; number += 10; 我记得一种格式会立即保存结果,因此下一行代码可以使用新值,而对于另一种格式,
在 Python 匹配模式中,如何匹配像 1 这样的文字数字在按数字反向引用后 \1 ? 我尝试了 \g用于此目的的替换模式中可用的语法,但它在我的匹配模式中不起作用。 我有一个更大的问题,我想使用一
我的源文件here包含 HTML 代码,我想将电话号码更改为可在我的应用程序中单击。我正在寻找一个正则表达式来转换字符串 >numbernumber(\d+)$1numbernumber<",我们在S
我们有一个包含 2 个字段和一个按钮的表单。我们想要点击按钮来输出位于 int A 和 int B 之间的随机整数(比如 3、5 或 33)? (不需要使用 jQuery 或类似的东西) 最佳答案 你
我收到以下类型错误(TypeScript - 3.7.5)。 error TS2345: Argument of type '(priority1: number, priority2: number
只想创建简单的填充器以在其他功能中使用它: function fillLine(row, column, length, bgcolor) { var sheet = SpreadsheetApp
我有一个问题。当我保存程序输出的 *.txt 时,我得到以下信息:0.021111111111111112a118d0 以及更多的东西。 问题是: 这个数字中的“d0”和“a”是什么意思? 我不知道“
首先:抱歉标题太长了,但我发现很难用一句话来解释这个问题;)。是的,我也四处搜索(这里和谷歌),但找不到合适的答案。 所以,问题是这样的: 数字 1-15 将像这样放在金字塔中(由数组表示):
我想从字符串中提取血压。数据可能如下所示: text <- c("at 10.00 seated 132/69", "99/49", "176/109", "10.12 I 128/51, II 1
当尝试执行一个简单的 bash 脚本以将前面带有 0 的数字递增 1 时,原始数字被错误地解释。 #!/bin/bash number=0026 echo $number echo $((number
我有一个类型为 [number, number] 的字段,TypeScript 编译器(strict 设置为 true)出现问题,提示初始值值(value)。我尝试了以下方法: public shee
你能帮我表达数组吗:["232","2323","233"] 我试试这个:/^\[("\d{1,7}")|(,"\d{1,7}")\]$/ 但是这个表达式不能正常工作。 我使用 ruby(rail
这个问题在这里已经有了答案: meaning of (number) & (-number) (4 个回答) 关闭6年前. 例如: int get(int i) { int res = 0;
我正在考虑使用 Berkeley DB作为高度并发的移动应用程序后端的一部分。对于我的应用程序,使用 Queue对于他们的记录级别锁定将是理想的。但是,如标题中所述,我需要查询和更新概念建模的数据,如
我正在尝试解决涉及重复数字的特定 JavaScript 练习,为此我需要将重复数字处理到大量小数位。 目前我正在使用: function divide(numerator, denominator){
我有这个数组类型: interface Details { Name: string; URL: string; Year: number; } interface AppState {
我们正在使用 Spring 3.x.x 和 Quartz 2.x.x 实现 Web 应用程序。 Web 服务器是 Tomcat 7.x.x。我们有 3 台服务器。 Quartz 是集群式的,因此所有这
我是一名优秀的程序员,十分优秀!