使运动范围 SKSpriteNode

Posted

技术标签:

【中文标题】使运动范围 SKSpriteNode【英文标题】:Make Range of Movement SKSpriteNode 【发布时间】:2020-04-18 23:09:25 【问题描述】:

这是我的代码:

import SpriteKit
import GameplayKit

class GameScene: SKScene 

    var ship1 = [2,1]
    var ship2 = [1,2]

    let jonahSpriteNode = SKSpriteNode(imageNamed: "jonah_spaceship")
    let georgeSpriteNode = SKSpriteNode(imageNamed: "george_spaceship")

    override func didMove(to view: SKView) 
        //var jonahFrames = [SKTexture]()
        jonahSpriteNode.position = CGPoint(x: 30, y: frame.midY)
        jonahSpriteNode.size = CGSize(width: 100.0, height: 100.0)
        addChild(jonahSpriteNode)

        georgeSpriteNode.position = CGPoint(x: 628, y: frame.midY)
        georgeSpriteNode.size = CGSize(width: 100.0, height: 100.0)
        addChild(georgeSpriteNode)
    

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) 
        for touch in touches
            var touchLocation = touch.location(in: self)
            var angle1 = atan2(jonahSpriteNode.position.y - touchLocation.y , jonahSpriteNode.position.x - touchLocation.x)
            var angle = angle1 - CGFloat(Double.pi / 1)

            let rotate = SKAction.rotate(toAngle: angle, duration: 1.0)
            let move = SKAction.move(to: CGPoint(x: touchLocation.x, y: touchLocation.y), duration: 2.5)
            let sequence = SKAction.sequence([rotate, move])
            jonahSpriteNode.run(sequence)
        
    

我开始了一个太空射击游戏,我想设置一个移动范围,这样 SKSpriteNode 只能移动这么远。我想让范围成为圆形区域。有谁知道我可以做到这一点的方法?我搜索了谷歌和堆栈溢出,但没有任何问题相关。只是让你知道,我是 swift 的新手。这可能是一个非常简单的答案,但我找不到。如果有人有想法请回答。

【问题讨论】:

【参考方案1】:

您可以像这样向节点添加约束:

func makeCircularRange(to node: SKNode) 
    let range = SKRange(lowerLimit: 0, upperLimit: 100)
    let constraint = SKConstraint.distance(range, to: .zero)
    node.constraints = [constraint]

确定可以更改值和中心,.zero,其他值仅供参考。

在这个例子中,绿点有约束,红色没有。

在这里查看完整示例:https://github.com/Maetschl/SpriteKitExamples/blob/master/CircularRange/CircularRange/GameScene.swift

【讨论】:

以上是关于使运动范围 SKSpriteNode的主要内容,如果未能解决你的问题,请参考以下文章

结对-贪吃蛇游戏-开发过程

检测加速度计检测到运动的时间范围

机器人的运动范围(DFS)

机器人的运动范围(DFS)

Swift Sprite Kit 相机运动

AcWing22:机器人的运动范围