我正在用移动的精灵和障碍物制作游戏来学习SpriteKit。我希望移动的精灵与障碍物相撞并从障碍物上反弹,但我希望障碍物保持固定。我该怎么做?我尝试了以下方法,但没有成功:
SKConstraint修复对象的移动和旋转。当我这样做的时候,他们只是互相穿插
将身体的质量设置为真正高,如下barrier.physicsBody?。质量=CG点。maxFiniteMagnitude
但这会冻结游戏。当我把它设置得很高时,它似乎什么也做不了
设置障碍物?。物理身体。当物体碰撞时,速度=CGVector(dx:0,dy:0)
。我知道<代码>联系人。车身A和触点。bodyB
是通过值而不是引用传递的,因此我循环通过一个带有障碍物的数组,并以此方式设置速度。障碍物仍然被其他精灵推着更新:-设置< code >障碍物. physicsBody?。collisionBitMask = physics category . none 因此精灵与障碍物碰撞,而不是相反。
对象设置如下,鱼是另一个精灵:
obstacle.position = location
obstacle.physicsBody = SKPhysicsBody(rectangleOf: obstacle.size)
obstacle.physicsBody?.isDynamic = true
obstacle.physicsBody?.categoryBitMask = PhysicsCategory.obstacle
obstacle.physicsBody?.contactTestBitMask = PhysicsCategory.fish
obstacle.physicsBody?.collisionBitMask = PhysicsCategory.fish
obstacle.physicsBody?.usesPreciseCollisionDetection = true
self.obstacles.append(obstacle)
super.addChild(obstacle)
如果我做错了什么/误解了什么,请告诉我。谢谢
在这里找到了答案。其中一个对象需要有. ics icsBody?. isDynamic=true
。在这种情况下,我将障碍物设置为false
,因此它是静止的。
父类: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 雨滴从屏幕顶部“落下”,如果其中一个碰到雨伞/与雨伞碰撞..雨滴应该被删除了。但是除了特定雨滴之外,所有其他雨滴都受此影响。
我正在与Python 2.7和pyplay空间入侵者克隆。我可以让我的坦克移动,发射子弹,外星飞船被删除,所以冲突检测工作正常。我创建了一个精灵组,我希望我可以使用这个组移动所有的船只。我也尝试了“unionall”,但这似乎对这个团体不起作用。我可以像这样穿过所有的船: 然后 通过这种方式,我想找到船只的边界(虽然我猜rect.right和rect.left会更好),如果屏幕的边缘相比,这样我就
我正在PyGame中制作一个太空入侵者游戏,但当我尝试绘制投射物时,它会覆盖/更改主精灵(平面)。如何解决此问题,以便在屏幕上显示多个精灵?
Pixi 精灵 现在你就有了一个画布,可以开始往上面放图像了。所有你想在画布上显示的东西必须被加进一个被称作 舞台的Pixi对象中。你能够像这样使用舞台对象: app.stage 这个舞台是一个Pixi 容器对象。你能把它理解成一种将放进去的东西分组并存储的空箱子。 舞台对象是在你的场景中所有可见对象的根容器。所有你放进去的东西都会被渲染到canvas中。现在舞台是空的,但是很快我们就会放进去一点
精灵是一个总是面朝着摄像机的平面,通常含有使用一个半透明的纹理。 精灵不会投射任何阴影,即使设置了 castShadow = true也将不会有任何效果。 代码示例 const map = new THREE.TextureLoader().load( "sprite.png" ); const material = new THREE.SpriteMaterial( { map: map } )