gpt4 book ai didi

ios - Sprite 不受物理影响

转载 作者:行者123 更新时间:2023-11-28 19:40:45 26 4
gpt4 key购买 nike

我想要一个 SKSpriteNode 继续在屏幕上移动并永远随着边缘弹跳。所以我设置了边缘的物理特性:

    let borderBody = SKPhysicsBody(edgeLoopFromRect: self.frame)
borderBody.friction = 0
self.physicsBody = borderBody
physicsWorld.gravity = CGVectorMake(0, 0)

然后是 Sprite 的物理特性:

    ball.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))
ball.size = CGSizeMake(30, 30)
ball.physicsBody = SKPhysicsBody(circleOfRadius: ball.size.width/2)
ball.physicsBody?.allowsRotation = false
ball.physicsBody?.restitution = 1.0
ball.physicsBody?.linearDamping = 0.0
ball.physicsBody?.friction = 0.0
ball.physicsBody?.applyImpulse(CGVectorMake(10, -10))

self.addChild(ball)

问题是 Sprite 无论如何都不会受到物理的影响,而是停留在屏幕的中央。我做错了什么?

最佳答案

您需要先将球添加到您的场景中,然后再将冲量应用到它。

import SpriteKit

class GameScene: SKScene {
override func didMoveToView(view: SKView) {

let borderBody = SKPhysicsBody(edgeLoopFromRect: self.frame)
borderBody.friction = 0
self.physicsBody = borderBody
physicsWorld.gravity = CGVectorMake(0, 0)

let ball = SKSpriteNode(color: SKColor.redColor(), size: CGSizeMake(30, 30))
ball.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame))
ball.physicsBody = SKPhysicsBody(circleOfRadius: ball.size.width/2)
ball.physicsBody?.allowsRotation = false
ball.physicsBody?.restitution = 1.0
ball.physicsBody?.linearDamping = 0.0
ball.physicsBody?.friction = 0.0

self.addChild(ball)
ball.physicsBody?.applyImpulse(CGVectorMake(10, -10))
}
}

关于ios - Sprite 不受物理影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34456717/

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