当前位置: 首页 > 知识库问答 >
问题:

如何阻止精灵从特定的表面反弹

卫甫
2023-03-14

嗨,我正在制作一个无休止的滚动游戏,其中角色基本上避开了障碍物,他可以跳过它们。我让一切都做得很好,但我看到角色纹理在撞击地面后会稍微反弹。我希望精灵在着陆后立即停止。我尝试将 .restitution 属性设置为 0,但我仍然看到它反弹。这是我的火柴人角色和有问题的边缘物理类别的设置代码

stickman.physicsBody?.dynamic = true
    stickman.physicsBody?.allowsRotation = false
    stickman.physicsBody?.usesPreciseCollisionDetection = true
    stickman.physicsBody?.categoryBitMask = PhysicsCategory.Stickman
    stickman.physicsBody?.collisionBitMask = PhysicsCategory.Edge
    stickman.physicsBody?.contactTestBitMask = PhysicsCategory.Obstacle | PhysicsCategory.Edge
    stickman.physicsBody?.restitution = 0


self.physicsWorld.gravity = CGVector(dx: 0, dy: -9.8)
    physicsBody = SKPhysicsBody(edgeLoopFromRect: playableRect)
    physicsWorld.contactDelegate = self
    physicsBody?.categoryBitMask = PhysicsCategory.Edge

其中可播放的rect只是用于通用部署目的的屏幕边界。

有人遇到过这个问题吗?我在其他帖子中找不到同样的问题。

共有1个答案

景鹏飞
2023-03-14

将sprite正在运行的物理实体的< code >恢复也设置为< code>0。物理碰撞中的两个物理实体都需要恢复为0,以产生无反弹。

 类似资料:
  • 从精灵图(雪碧图)中创建精灵【为了防止与精灵混淆,我在之后的译文中都将采用雪碧图这一译法】 你现在已经知道了怎么从一个单文件内加载图像。但是作为一个游戏设计师,你没准更经常使用 雪碧图(也被称之为 精灵图)。Pixi封装了一些方便的方式来处理这种情况。所谓雪碧图就是用一个单文件包含你游戏中需要的所有文件,这里就是一个包含了游戏对象和游戏觉得的雪碧图。 整个雪碧图是192192像素宽高,但每一个单图

  • 父类:BK.Node 精灵类 成员变量 变量 类型 名称 备注 size Object 大小 anchor Object 锚点 cornerRadius number 圆角 单位为像素 例子: var babaTex =new BK.Texture('GameRes://texture/test.png'); var sp =new BK.Sprite(200,200,babaTex,0,1,1

  • 所以我一直在做一个游戏,到目前为止最大的问题是我们不能让玩家与球场上的任何物体相撞。相反,它们会直接穿过树。有人能告诉我为什么吗?以下是我尝试用于碰撞检测的代码: 这是理论上的声音还是我完全错了?

  • 我在PyGame中创建了两个简单的精灵,其中一个是雨伞,另一个是雨滴。雨滴被添加到一个名为< code>all_sprites的sprite组中。伞精灵有自己的组,名为< code>Umbrella_sprite 雨滴从屏幕顶部“落下”,如果其中一个碰到雨伞/与雨伞碰撞..雨滴应该被删除了。但是除了特定雨滴之外,所有其他雨滴都受此影响。

  • 我正在用移动的精灵和障碍物制作游戏来学习SpriteKit。我希望移动的精灵与障碍物相撞并从障碍物上反弹,但我希望障碍物保持固定。我该怎么做?我尝试了以下方法,但没有成功: 设置障碍物.physicsBody?。isDynamic=true。这使得精灵们穿过了障碍物 使用 。我知道<代码>联系人。车身A和是通过值而不是引用传递的,因此我循环通过一个带有障碍物的数组,并以此方式设置速度。障碍物仍然被

  • 我做了很多关于如何阻止一个频道使用命令的研究,比如Rythm的黑名单,但是我没有找到,有人能帮我吗?