gpt4 book ai didi

swift - 如何将 SKPhysicsBody 应用于贝塞尔曲线?

转载 作者:可可西里 更新时间:2023-11-01 02:16:48 26 4
gpt4 key购买 nike

我正在创建一个摩托车越野赛游戏,我有一个弯曲的地面供玩家驾驶。我创建地面的代码如下所示:

    let path = UIBezierPath()
let startPoint = CGPoint(x: 0.0, y: self.playerCamera.position.x + 50)
let endPoint = CGPoint(x: self.frame.width, y: self.playerCamera.position.x + 50)

path.moveToPoint(startPoint)
path.addCurveToPoint(endPoint, controlPoint1: CGPoint(x: 200.0, y: 100), controlPoint2: CGPoint(x: 400.0, y: -100))


let myShape = SKShapeNode()
myShape.path = path.CGPath
myShape.lineWidth = 20


myShape.physicsBody = SKPhysicsBody(edgeLoopFromPath: path.CGPath)
myShape.physicsBody?.categoryBitMask = CollisionCategories.Ground
myShape.physicsBody?.contactTestBitMask = CollisionCategories.Player

myShape.physicsBody?.dynamic = false
myShape.physicsBody?.affectedByGravity = false
myShape.physicsBody?.allowsRotation = false


self.addChild(myShape)

我的问题是玩家在弯道上行驶,就好像它是一个矩形而不是沿着弯道行驶。

如何将实际曲线或路径应用为 PhyicsBody?

最佳答案

解决方案:

我觉得不借助工具是做不到的。

请看这个:http://avionicsdev.esy.es/article.php?id=13&page=1


工具:

您可以使用这个工具来达到想要的效果:

http://insyncapp.net/SKPhysicsBodyPathGenerator.html

“这个工具会让我们绘制一条路径,然后返回代码,帮助我们将该路径绘制到 Xcode 中”(摘自第一个链接)


方法论:

您可能需要对 UIBezierPath 进行屏幕截图并将其转换为 Sprite,但我不确定是否有必要。查看该工具的说明。


解决方案 2:

更改游戏引擎。

在我看来,您也许能够找到一种方法来实现您想要的,但这不会是一个简单直接的解决方案。另一方面,其他游戏引擎更完整,应该可以为您提供所需的一切,而无需使用“技巧”来实现您想要的。

我希望我是错的,SpriteKit 确实比那更完整,但它看起来不像。

使用 Unity 而不是 SpriteKit。

SpriteKit 非常适合相对简单的游戏,但它有一定的局限性,您似乎只是找到了一个。

Unity 是一个成熟的游戏引擎,应该能更好地满足您的需求。

或者看看 Cocos2D:http://cocos2d.spritebuilder.com/如果您想继续使用 Swift(您可能必须学习 C# 才能使用 Unity)。

关于swift - 如何将 SKPhysicsBody 应用于贝塞尔曲线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37513124/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com