好的,试着了解如何做到这一点 - 我有一个角色(SCNNode)并且需要确定玩家是否将要移动(向前走),如果没有平台来阻止他(受重力影响的玩家) )。
如果没有,我将在适当的位置产生一个平台。我认为要做的是在物体前面用不同的碰撞掩模制作一个物理体,并检查是否与平台物理实体最终接触 -
像这样:
然后检查名称,看看角色前面的区域是否为空,要知道产生一个平台:
func physicsWorld(_ world: SCNPhysicsWorld, didEnd contact: SCNPhysicsContact) {
//Platforms
if contact.nodeA.physicsBody!.categoryBitMask == Bitmask.collision.rawValue {
if(contact.nodeA.name == bot.frontCollider.name || contact.nodeB.name == bot.frontCollider.name)
{
print("Front collide exit")
}
contactPlatform(contact.nodeA, touching: false)
}
if contact.nodeB.physicsBody!.categoryBitMask == Bitmask.collision.rawValue {
if(contact.nodeA.name == bot.frontCollider.name || contact.nodeB.name == bot.frontCollider.name)
{
print("Front collide exit")
}
问题是这导致其他碰撞问题/不可靠。我不认为didEnd contact:SCNPhysicsContact)是正确的方法 - 检测在面向前方的角色前面是否存在物理主体的最佳方法是什么?