SpriteKit 重力

Posted

技术标签:

【中文标题】SpriteKit 重力【英文标题】:SpriteKit Gravity 【发布时间】:2015-08-27 20:44:40 【问题描述】:

我只是在 sprite-kit 中玩弄我的游戏设计技能,但我遇到了一些我不知道该怎么做的事情。那就是让物理世界的引力更像月球引力。我有一个 SKSpriteNode,它是一个红球,我可以拖动那个球并单击我想要它去的任何地方。我想要创建的是某种投掷机制。这可以用一行物理世界重力代码吗?还是更深入地了解这是我拥有的代码。

import SpriteKit

class GameScene: SKScene 

let redBall = SKSpriteNode(imageNamed: "redball")


override func didMoveToView(view: SKView) 
    let worldBorder = SKPhysicsBody(edgeLoopFromRect: self.frame)
    self.physicsBody = worldBorder
    self.physicsBody?.friction = 1

    self.physicsWorld.gravity = CGVectorMake(0, -1)

    redBall.position = CGPoint(x:250,y:50)
    addChild(redBall)
    redBall.physicsBody = SKPhysicsBody(circleOfRadius: redBall.size.width/2)



override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) 
    let touch = touches.first as! UITouch
    let location = touch.locationInNode(self)
    redBall.position = location

override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) 
    let touch = touches.first as! UITouch
    let location = touch.locationInNode(self)
    redBall.position = location


override func update(currentTime: CFTimeInterval) 
    /* Called before each frame is rendered */

我现在的游戏状态是当我将一个球拖到我想要的位置并释放它时它就会掉落。我想要完成的是,例如,如果我抓住球并向右拖动,我希望球跟随我释放它时的方向。我将如何在我的代码中创建它谢谢!

【问题讨论】:

也许这样的事情可以帮助:***.com/a/28259980/3402095 【参考方案1】:

在我的代码中,我所做的只是 self.physicsworld.gravity = CGVectorMake(0, 0) (这将完全关闭重力)。然后随意摆弄那个向量,找到一些感觉像月球引力的东西。

您可能必须将游戏场景设置为 SKPhysicsContactDelegate

【讨论】:

以上是关于SpriteKit 重力的主要内容,如果未能解决你的问题,请参考以下文章

SpriteKit 重力

swift spritekit 随着游戏时间的推移增加重力?

Spritekit - 将加速应用于物理主体

SPRITEKIT游戏框架之关于PHYSICS物理引擎属性

如何使用 SpriteKit 使精灵跳到特定高度?

如何使用 Swift 5 在 SpriteKit 中以某个角度应用Impulse?