Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sprite kit 从纹理图集中的纹理创建physicsBody会导致奇怪的比例_Sprite Kit_Skphysicsbody - Fatal编程技术网

Sprite kit 从纹理图集中的纹理创建physicsBody会导致奇怪的比例

Sprite kit 从纹理图集中的纹理创建physicsBody会导致奇怪的比例,sprite-kit,skphysicsbody,Sprite Kit,Skphysicsbody,我使用由图像生成的physicsBody,将图像文件放入Assets.xcsets文件中,并使用图像名称作为imageNamed参数创建spriteNode,然后使用spriteNodes纹理作为physicsBody的纹理参数,并使用spriteNode中相同的大小值作为size参数。这就像13.0以下的魅力一样(13.0对此有一些问题)。但是,如果我尝试对相同的图像文件执行相同的操作,但是在纹理图集中,spriteNode()看起来仍然非常好,但是physicsBody严重失衡,我可以通过将

我使用由图像生成的physicsBody,将图像文件放入Assets.xcsets文件中,并使用图像名称作为imageNamed参数创建spriteNode,然后使用spriteNodes纹理作为physicsBody的纹理参数,并使用spriteNode中相同的大小值作为size参数。这就像13.0以下的魅力一样(13.0对此有一些问题)。但是,如果我尝试对相同的图像文件执行相同的操作,但是在纹理图集中,spriteNode()看起来仍然非常好,但是physicsBody严重失衡,我可以通过将物理体的宽度和高度除以不同的值来让它们排成一行,但事实上,我必须对某些东西施加暴力,这意味着我可能做错了什么

使用spriteAtlas时,请记住翅膀不是spriteNode的一部分,而围绕鹰的矩形是另一个身体:

如何创建物理实体:

func创建鸽子(大小:CGSize,位置:CGPoint){
//不带纹理图谱
sprite=SKSpriteNode(图像名为:“鸽子箱”)
//有纹理的
sprite=SKSpriteNode(纹理:gamesence.spriteAtlas.textureNamed(“鸽子盒”))
雪碧!.size=size
精灵!.position=位置
雪碧!.name=“鸽子”
sprite!.physicsBody=SKPhysicsBody(纹理:sprite!.texture!,大小:size)
精灵!.zPosition=1
精灵!.physicsBody!.isDynamic=true
defaultCollisions()
游戏场景。addChild(精灵!)
}

因此我发现问题在于SpriteKit重叠和删除alpha的方式,以便将更多图像压缩到一个地图册中。我能找到的唯一修复方法是将我用于Hitbox的图像放入Assets.xcsets文件,并确保动画操作的resize设置为false


我明白为什么会这样做,但这只是导致我无法将13张好的图像放入一个textureAtlas中,应该有一个选项不删除alpha,所以我发现问题是由于SpriteKit重叠和删除alpha的方式,以便将更多图像压缩到一个图集中。我能找到的唯一修复方法是将我用于Hitbox的图像放入Assets.xcsets文件,并确保动画操作的resize设置为false



我明白为什么会这样做,但这只是导致我无法在纹理中放置好13张图像。应该有一个选项,不使用axe alpha,看起来你可能抓错了size@Knight0fDragon它们使用相同的值<代码>swift func CreateDige(大小:CGSize,位置:CGPoint){sprite!.size=size-sprite!.physicsBody=SKPhysicsBody(纹理:sprite!.texture!,大小:size)}你我都不知道。在sprite套件中,资产抓取非常复杂,因为它会尽最大努力确保自己正在抓取资产。最重要的是,如何创建资产很重要,资产图谱何时分配也很重要。@Knight0fDragon????我把同样的关于尺寸的论点传给了他们,这就是我的意思。我认为现在发生的事情是,当设置SpritAtlas时,它没有考虑alpha允许更多图像适合,所以当它对纹理应用一个大小时,它看起来扭曲了看起来你可能抓错了方向size@Knight0fDragon它们使用相同的值<代码>swift func CreateDige(大小:CGSize,位置:CGPoint){sprite!.size=size-sprite!.physicsBody=SKPhysicsBody(纹理:sprite!.texture!,大小:size)}你我都不知道。在sprite套件中,资产抓取非常复杂,因为它会尽最大努力确保自己正在抓取资产。最重要的是,如何创建资产很重要,资产图谱何时分配也很重要。@Knight0fDragon????我把同样的关于尺寸的论点传给了他们,这就是我的意思。我认为现在的情况是,当设置SpriteTlas时,它没有考虑alpha,从而允许更多图像适合,因此当它对纹理应用一个大小时,它会出现扭曲。iOS 13或Xcode 11中存在一个bug,影响从纹理创建的物理实体。这不仅仅是一个纹理图集问题。@0x141E是的,我使用12.2,因为13.0破坏了纹理创建的PhysicsBody,几周前我在反馈助手上向苹果公司报告了一个关于这个问题的错误,但到目前为止,它被忽略了,类似报告的数量改为“少于10”,但到目前为止仅此而已。该问题是否在13.1及以上版本中持续存在?(我还没有更新Xcode)是的,13.1.2也有这个问题。@0x141E该死,他们也确实需要修复13.1.3,不幸的是,iOS 13或Xcode 11中都有一个bug,它会影响从纹理创建的物理实体。这不仅仅是一个纹理图集问题。@0x141E是的,我使用12.2,因为13.0破坏了纹理创建的PhysicsBody,几周前我在反馈助手上向苹果公司报告了一个关于这个问题的错误,但到目前为止,它被忽略了,类似报告的数量改为“少于10”,但到目前为止仅此而已。该问题是否在13.1及以上版本中持续存在?(我还没有更新Xcode)是的,13.1.2也有这个问题。@0x141E该死,不幸的是,他们真的需要修复13.1.3