我正试图从拍摄'使用圆弧将场景上的节点转换为场景中的动态但已知点。
对于上下文来说,这是一款塔防游戏,这就是“迫击炮”。塔。
我正在使用SpriteKit和Objective-C。我对编码比较陌生,但是我已经走得很远,所以我对事物有了很好的掌握,因为我使用了三角函数而且我已经厌倦了UIBezierPath,所以我已经很久了。
以下是我的代码片段:
CGPoint cannonPointOnScene = [self.scene convertPoint:self.position fromNode:self.parent];
CGPoint originPoint = CGPointMake(realDest.x - cannonPointOnScene.x, realDest.y - cannonPointOnScene.y);
float angle = atan2f(originPoint.y, originPoint.x);
UIBezierPath *testPath = [[UIBezierPath alloc] init];
[testPath addArcWithCenter:CGPointMake(self.position.x , self.position.y) radius:10.0 startAngle:0.0 endAngle:angle clockwise:YES];
SKAction *actionMove = [SKAction followPath:[testPath CGPath] speed:self.projectileSpeed];
SKAction * actionMoveDone = [SKAction removeFromParent];
SKAction* fire = [SKAction sequence:@[actionMove, actionMoveDone]];
使用该代码,我只是让我的射弹出现在远离塔节点的一个地方,然后从场景中移除。
提前致谢!
答案 0 :(得分:1)
我无法评论,所以在尝试提供答案之前我不能要求更多信息,但我仍然认为我可以提供帮助。
我无法从你的变量中知道你是如何构建相对于精灵的路径的,但我建议的第一件事是将半径增加到100.0或200.0只是为了看看发生了什么。 10.0是一个相当小的半径。样板游戏的游戏是1024点宽,10.0点不到1%。
您创建的路径是以“self.position”为中心的圆的一部分,半径为10磅。
鉴于你的描述并假设我们只是使用场景坐标空间,我想:
以上建议很多关于你的游戏是如何运作的,并且它不太可能有效,但希望它可以让你很好地了解从哪里开始。