sprite-kit - CGMutablePathRef 或 SKShapeNode 不在正确位置
问题描述
我正在为我的引擎中的一个组件创建一个 SpritKit 可视化,以帮助调试并允许我在没有完整图形负载的情况下测试功能。
我的第一个目标本质上是确保我可以将“引擎模拟”中的点与 SpriteKit 基元相关联。为了实现这一点,我试图在屏幕周围绘制一个简单的矩形。我认为这很简单,但我遇到了最奇怪的问题,就好像坐标系是错误的一样。
因此,为了绘制矩形(技术上是沙漏,我正在执行以下代码:
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, nil, 0, 0);
CGPathAddLineToPoint(path, nil, engineSize.width, 0);
CGPathAddLineToPoint(path, nil, engineSize.width , engineSize.height);
CGPathAddLineToPoint(path, nil, 0, engineSize.height );
CGPathAddLineToPoint(path, nil, 0, 0);
CGPathAddLineToPoint(path, nil, engineSize.width, engineSize.height);
CGPathAddLineToPoint(path, nil, 0, engineSize.height);
CGPathAddLineToPoint(path, nil, engineSize.width,0);
_engineBounds = [SKShapeNode shapeNodeWithPath:path];
_engineBounds.lineWidth = 20;
_engineBounds.strokeColor = UIColor.purpleColor;
_engineBounds.position = CGPointMake(self.view.frame.size.width * -0.5, self.view.frame.size.height * -0.5);
_engineBounds.zPosition = 1;
_engineBounds.fillColor = UIColor.greenColor;
[self addChild:_engineBounds];
目标是在 CG 调用中,我可以根据引擎坐标系放置坐标,并让它们正确显示,因为我会随着位置移动原点。
- (void)didMoveToView:(SKView *)view
我在默认 SpriteKit 项目中绘制并设置引擎。
Screen scr;
scr.width = self.view.frame.size.width;
scr.height = self.view.frame.size.height;
_testEngine->setScreen(scr);
[self visualizeEngineBounds];
你会认为这意味着引擎太大,所以我将引擎初始化大小缩小了 0.5,这就是我得到的
请注意左下角仍然不在正确的位置。几乎就像坐标系稍微移动了一样。为什么会这样?
解决方案
推荐阅读
- ios - 如何关闭与 UIButton 一起使用的图像上的蓝色叠加层?
- c# - 在 C# 中的 ObjectListView 中的单元格内自定义格式
- c# - 通知不振动或不亮
- javascript - 如何在当前组件中附加 html 元素?
- or-tools - 限制ortools中vrp问题的活动尺寸
- node.js - 谷歌“一键式”验证:令牌中的段数错误
- javascript - 为什么我的代码在比较 2 个数组时只返回一次 true?
- laravel - laravel中不同的404页面
- string - 从具有多个扩展名的文件名中删除某些扩展名
- amazon-web-services - AWS ALB 随机 504 网关超时