首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何检查两个SKSpriteNodes是否彼此靠近?

如何检查两个SKSpriteNodes是否彼此靠近?
EN

Stack Overflow用户
提问于 2017-06-15 11:29:04
回答 2查看 156关注 0票数 3

如何检查两个SKSpriteNodes是否彼此靠近?就像在半径100里。我正在使用gamescene.swift和gamescene.sks。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-15 11:53:16

SKSpriteNode具有一个带有(x,y)的位置属性。

两个位置之间的距离是sqrt((x1-x2)^2 + (y1-y2)^2)

所以:

代码语言:javascript
运行
AI代码解释
复制
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的评论,你也可以

代码语言:javascript
运行
AI代码解释
复制
let dist = hypot(sk1.position.x - sk2.position.x, sk1.position.y - sk2.position.y)

它为你提供距离函数。

票数 1
EN

Stack Overflow用户

发布于 2017-06-15 16:53:35

如果您想使用内置于SKPhysicsBody中的,那么只需将主体设置为半径为100的圆,那么当发生接触时,可以使用didBeginContact方法:

代码语言:javascript
运行
AI代码解释
复制
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
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44575483

复制
相关文章

相似问题

领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文