如何围绕对象外的点旋转节点(即不要围绕对象的中心点旋转)。

问题描述 投票:0回答:1

我现在有什么,我的游戏在Xcode上的模拟器上加载,因为它应该,但当我点击屏幕时,"基本顶部 "不旋转。基本顶部是四个三角形中的一个,组成了一个正方形。

我想要的是 为了让那个正方形旋转,我必须让四个三角形都旋转。现在,即使我点击屏幕,基本的顶部也不会旋转。一旦我让basic top旋转,我就可以复制其他三角形的代码来制作一个旋转的正方形。我需要这四个三角形都围绕某一点旋转。

代码如下

class GameScene: SKScene { 
var brickSwitch: SKSpriteNode!
var basicTop = SKSpriteNode(imageNamed: "Top Side");
var basicBottom: SKSpriteNode!
var basicLeft: SKSpriteNode!
var basicRight: SKSpriteNode!   
override func didMove(to view: SKView) {
layoutScene()     
}

func turnBasicTop() {
  basicTop.isUserInteractionEnabled = true
  basicTop.run(SKAction.rotate(byAngle: .pi/2, duration: 0.25))
}

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    turnBasicTop()
}

func spawnBasicTop() {
let basicTop = SKSpriteNode(imageNamed: "basic top")
basicTop.size = CGSize(width: 400, height: 400)
basicTop.position = CGPoint(x: 230, y: 200)
basicTop.zPosition = 1

basicTop.physicsBody = SKPhysicsBody(rectangleOf: basicTop.size)
basicTop.physicsBody?.categoryBitMask = PhysicsCategories.basicTopCategory
basicTop.physicsBody?.isDynamic = false
basicTop.physicsBody?.allowsRotation = true

addChild(basicTop)
}
swift xcode rotation skspritenode
1个回答
0
投票

basicTop 定义于 spawnBasicTop() 指的是方法内定义的局部变量,作为同名的局部变量,另一个范围更大的变量优先引用。因此,当你试图在方法中运行一个动画时,你可以在 basicTopturnBasicTop() 方法,动作在一个完全独立的 SKSpriteNode 实例。我想你没有看到任何事情发生,是因为场景的 basicTop 财产不在视野之内;有其 isHidden 属性为真;或者不能被分配给图像的 "Top Side" 因为它不存在,所以大小为零。添加

self.basicTop = basicTop

spawnBasicTop() 方法就可以了,不过我建议你多了解一下Swift,以及变量是如何声明、捕获等。

© www.soinside.com 2019 - 2024. All rights reserved.