使用 SKSpritenodes/碰撞检测在 Swift 中自定义类
Posted
技术标签:
【中文标题】使用 SKSpritenodes/碰撞检测在 Swift 中自定义类【英文标题】:Custom Class in Swift using SKSpritenodes/Collision Detection 【发布时间】:2016-01-03 23:12:25 【问题描述】:我目前正在开发一款敌人从屏幕左侧生成并向右移动的游戏。我想赋予这些敌人自己的属性(健康、力量等)。所以我正在创建一个 Basic_fighter 类。我还有一个用户狙击镜,用户可以用来击中敌人。我遇到的问题是如何访问 DidBeginContact 函数中的敌人属性,因为该函数只返回两个节点,而不是类信息。我会把我的代码放在下面
Basic_Fighter_Class
import Foundation
import SpriteKit
class Basic_Fighter
var health = Int()
var type = SKSpriteNode()
init(sk:SKSpriteNode)
self.type = sk
self.health = 3
func spawn_enemies()
let enemynode = SKSpriteNode(imageNamed: "Shooter")
enemynode.size = CGSize(width: 100, height: 40)
enemynode.position = CGPoint(x: self.size.width / 2, y: self.size.height / 2)
enemynode.physicsBody = SKPhysicsBody(rectangleOfSize: enemynode.size)
enemynode.physicsBody?.affectedByGravity = false
enemynode.physicsBody?.categoryBitMask = BodyType.enemy
enemynode.physicsBody?.contactTestBitMask = BodyType.bullet
let enemy = Basic_Fighter(sk: enemynode)
addChild(enemynode)
我可以在 DidBeginContact 函数中检测到用户范围和敌人之间的接触,但我不知道如何访问敌人的信息,例如它的健康状况。
【问题讨论】:
只在 didbegincontact 中访问 body 的节点特征,这在多个教程中都有,然后你只需将其转换为它所属的类 你有想过这个吗? 【参考方案1】:我认为您可以使用enemynode.health 访问它,不过我不确定。
【讨论】:
以上是关于使用 SKSpritenodes/碰撞检测在 Swift 中自定义类的主要内容,如果未能解决你的问题,请参考以下文章
SKPhysicsContact未检测到categoryBitMask碰撞
添加 SKPhysicsBody 会导致 SKSpriteNode 抖动