如何检查两个SKSpriteNodes是否彼此靠近?就像在半径100里。我正在使用gamescene.swift和gamescene.sks。
发布于 2017-06-15 11:53:16
SKSpriteNode具有一个带有(x,y)的位置属性。
两个位置之间的距离是sqrt((x1-x2)^2 + (y1-y2)^2)
所以:
let dist = sqrt(pow(sk1.position.x - sk2.position.x, 2.0) + pow(sk1.position.y - sk2.position.y, 2.0))
if dist < 100 {
// they are close
}
这是中心到中心。
根据@MartinR的评论,你也可以
let dist = hypot(sk1.position.x - sk2.position.x, sk1.position.y - sk2.position.y)
它为你提供距离函数。
发布于 2017-06-15 16:53:35
如果您想使用内置于SKPhysicsBody中的,那么只需将主体设置为半径为100的圆,那么当发生接触时,可以使用didBeginContact方法:
func setup()
{
let physicsBody1 = SKPhysicsBody(circleOfRadius:100.0)
physicsBody1.categoryBitMask = 1
physicsBody1.collisionBitMask = 0
physicsBody1.contactTestBitMask = 2
sprite1.physicsBody = physicsBody1
let physicsBody2 = SKPhysicsBody(circleOfRadius:100.0)
physicsBody2.categoryBitMask = 2
physicsBody2.collisionBitMask = 0
physicsBody2.contactTestBitMask = 1
sprite2.physicsBody = physicsBody2
}
func didBeginContact(contact:SKPhysicsContact)
{
//find some tutorials to your liking, and do your contact code here
}
https://stackoverflow.com/questions/44575483
复制相似问题