【问题标题】:swift physicsbody is not matching up to image size快速物理体不匹配图像大小
【发布时间】:2016-12-11 19:26:37
【问题描述】:

我有两个节点,播放器和平台。两者周围都有一个physicsBody。我的播放器静止不动,平台通过 SkAction 滚动。当玩家到达平台顶部的大约一半时,它会掉下来扔掉它。

player.physicsBody=SKPhysicsBody(rectangleOf:player.frame.size)
player.physicsBody?.isDynamic=true
player.physicsBody?.allowsRotation=false
player.physicsBody?.affectedByGravity=true

platform.physicsBody=SKPhysicsBody(rectangleOf:platfrom.frame.size)
platform.physicsBody?.isDynamic=false

平台设置是。

 plat.size=CGSize(width:(self.frame.width)*2,height:(self.frame.height)/3)
 plat.anchorPoint=CGPoint(x:0,y:0)
 plat.position=CGPoint(x:0,y:0)
 plat.zPosition = 2
 addChild(platform)

我尝试使用它,但播放器仍然摔倒

plat.physicsBody=SKPhysicsBody(rectangleOf:CGSize(width:platform.width,
height: platform.frame.height))

我希望节点表现得像一个实体对象,因为当玩家移动时它们不会相互重叠。还有一种我可以使用的替代方法。我真的不喜欢和物理打交道。

【问题讨论】:

  • 那么你当前的代码会发生什么?
  • 尝试在didMove 中设置view.showsPhysics = true 以显示场景中物理实体的轮廓。
  • 谢谢!显然physicsBody 不遵守anchorPoint 的变化。 @0x141E
  • @CindySmith 您是否尝试过为您的平台使用 SKPhysicsBody init(edgeLoopF​​rom rect: platform.frame) ?
  • @AlessandroOrnano 是的。我通过改变锚点解决了它。

标签: sprite-kit swift2 game-physics skphysicsbody


【解决方案1】:

使用物理的替代方法是使用最近添加到 iOS 10 的 SKTilemapNode 创建背景。每个瓷砖都可以用数据标记,以指示瓷砖是否是地面的。然后,您将关注玩家如何相对于瓷砖移动。目前没有很多例子可以证明这个工作,WWDC 2016: What's new in SpriteKit 简要说明了这一点。其他资源包括一个top down 示例,该示例至少展示了如何构建背景贴图,以及一些background info 说明为什么物理引擎不能为平台游戏提供最佳体验。 Kenney's 是一个很好的平台游戏图块来源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-27
    • 2014-11-27
    • 2015-01-26
    • 2016-08-18
    • 1970-01-01
    • 2015-04-21
    • 1970-01-01
    • 2017-06-30
    相关资源
    最近更新 更多