如何在Scenekit中使角色(SCNNode)从墙上弹回?

时间:2015-06-23 17:12:46

标签: swift scenekit

我正在尝试在Scenekit中制作一个简单的迷宫游戏。我有一个球体节点和墙节点。球体由SCNActions移动。我在球体上使用的动作是moveByX动作。我的问题是,每当球体撞到墙壁时,它就会将墙壁移回墙壁。我的球体是运动学的,我的墙壁是动态的。我在场景中没有任何力量,只有我的moveByX动作。我怎样才能让它的球体从墙上反弹?

我正在使用Swift。

3 个答案:

答案 0 :(得分:1)

将墙壁更改为.static,将球体更改为.dynamic

答案 1 :(得分:0)

你可以做的一种方法是为xSpeed和ySpeed设置变量,每当你与墙碰撞时,相应的变量都是负数。这是一种非常基本的方法,并没有考虑对角墙。

例如:

# views.py

def my_view(request, object_id, slug=None):
    # first get the object
    my_object = get_object_or_404(MyModel, id=object_id)

    # Now we will check if the slug in url is same 
    # as my_object's slug or not
    if slug != my_object.slug:
        # either slug is wrong or None
        return redirect(my_object.get_absolute_url())

    # this is processed if slugs match
    # so do whatever you want
    return render(request, 'my-template.html', {'my_object': my_object})

检测碰撞可能有点棘手,您可能需要查看有关SpriteKit碰撞的一些教程。

答案 2 :(得分:0)

适用于Swift3

    let border  = SKPhysicsBody(edgeLoopFrom: self.frame)

    border.friction = 0
    border.restitution = 1

    self.physicsBody = border