- 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/
在我的项目中,我使用 LocationSearchTable/MKLocalSearch。当用户点击一个项目时,我的添加注释方法在 MapViewController 中被调用: func dropP
我很想知道如何检查字符串是否具有两个坐标的格式,例如: (signed int x,signed int y) 我已经通过搜索找到了一些答案,但我还没有完全理解它们(刚开始使用 C++),我要求一个简
在我正在编写的程序中,我为两个类(坐标和图形)编写了代码,其中一个将另一个作为构造函数参数。当我尝试编译它时,出现以下 Graph.cpp 错误: undefined symbol : “Graph:
我在 OpenGL ES 中绘制变化的条,它有坐标 (x,y,z)。 我想在 Action_Down 上添加一些更改(例如:栏中的颜色)。有 getX(),但此方法返回以像素为单位的 x 坐标,而不是
因为我之前的问题很不清楚,所以我编辑了一下: 我有以下问题: 我想为半径为 r+fcr_size 的空心球体构建一个图案。空心球体的空腔半径应为 r。有了这个图案,我可以在许多不同的球体中心使用它,并
我想使用 Vuforia 检测标记并在其上放置一个 3d 对象。从那时起,我想在我的应用程序中使用 ARKit。我如何知道检测到的标记或 3d 对象的 ARKit 世界变换? 我正在使用相同的 Vie
我有一组纬度/经度坐标,我可以使用它们进行投影,例如 Mollweide 投影。 library(mapproj) set.seed(0) n 180] = my.points$x[my.point
我正在使用 JavaScript 进行视频处理,我做得很好,但我使用的是一种名为 canvasCtx.rect () 的方法,它接收这些参数。 然后我可以从使用 getImageData () 方法绘
我创建了一个新项目作为单 View 应用程序。在 View Controller 中添加了用于将 View 坐标转换为窗口坐标的代码: - (void) dumpFrame { CGRect
简短版本:如何将 SVG 路径添加到 Leaflet map ,以便在 map 坐标更改时(例如缩放更改或滑动时)路径会更新? 长版:你好,我有一个地形image包含建筑轮廓。对图像进行地理校正后,我
我编写了一个代码,使用 astropy 将坐标从地球固定系统转换为惯性坐标系: from astropy import coordinates as coord from astropy import
我的多显示器设置中遇到以下情况: 在此示例中,我希望将窗口精确定位在黄色箭头所示的坐标处。然而,我所拥有的只是 NSView 的坐标,它是跨越整个(更大、更上面)辅助监视器的 NSWindow 的 c
我不知道如何将 Pane 上圆形对象的所有 x 和 y 与鼠标的 x 和 y 进行比较。我正在处理的问题要求我设置它,以便鼠标的二次单击会在放置在其上时删除一个点,我想我可以通过比较圆坐标和鼠标坐标的
我正在尝试将图像中的几个点转换为 OpenCV 中的极坐标。我遇到了名为 cartToPolar 的函数,它会为我的点提供相对于 0,0 作为我的原点的极坐标。但是,我想通过将图像中的另一个点作为原点
是的,我想知道如何检查某个坐标是否在另一个坐标半径内。但这可能是一个很小的差异,因为纬度、经度、半径存储在数据库中,而我们要检查的只是给定的坐标。 示例 数据库表 name | lat
我正在使用带有图层的 map (来自示例): var lonLat = new OpenLayers.LonLat(40.4088576, -86.8576718) .
我在坐标转换方面遇到了一些麻烦。 我在屏幕上有一个已知坐标(x,y)的对象,我想将其转换为世界坐标(x,y,z),因为它会投影在相机的近平面上。 到目前为止,我可以像这样在Z平面上进行投影: var
我有4个足球场点(角点): P1(lat, lon, alt) , P2(lat, lon, alt) , P3(lat, lon, alt) , P4(lat, lon, alt) . 以及球场上的
我有一个交换了纬度和经度位置的 NetCDF 文件。 我通常使用的 Netcdf 的标准方式定义如下: Coordinates: * time (time) datetime64[n
如果 line1 和 lin2 都由 x,y,alpha 定义,其中 x,y 是直线上一点的坐标,alpha 是直线与 x=const 之间的角度,如何找到 line1 和 lin2 相交的点? 我尝
我是一名优秀的程序员,十分优秀!