根据实际玩家精灵计算BoxCollider2D
Calculate BoxCollider2D based on the actual player sprite
首先是我的初始情况:我正在做一个二维项目。播放器由一个 spritesheet 组成,并有小动画。动画并不总是与玩家的空闲形式一样大。它在宽度和高度上稍微缩放了一点。
现在想知道是否可以根据每个精灵的实际大小来计算BoxCollider2D
这里有人可以指导我如何解决这种情况吗?
此致:)
假设您使用的是 SpriteRenderer
:
您可以通过SpriteRenderer.Sprite
访问当前精灵。这使您可以访问 Sprite.rect
属性 以及 Sprite.pixelsPerUnit
属性.
使用这两个属性,我们可以通过以下方式更新 BoxCollider2D 的大小:
private void UpdateBoxCollider(BoxCollider2D collider, Sprite newSprite)
{
collider.size = newSprite.rect.size / newSprite.pixelsPerUnit;
}
感谢@derHugo 和@Chipinators 的回答,
我采纳了 derHugo 的建议,马上就奏效了。 BoxCollider2D 也是根据动画完全独立计算的。对于 one/two 个动画,我只需要稍微修改一下。
再次感谢您的回答。 ;)
首先是我的初始情况:我正在做一个二维项目。播放器由一个 spritesheet 组成,并有小动画。动画并不总是与玩家的空闲形式一样大。它在宽度和高度上稍微缩放了一点。
现在想知道是否可以根据每个精灵的实际大小来计算BoxCollider2D
这里有人可以指导我如何解决这种情况吗?
此致:)
假设您使用的是 SpriteRenderer
:
您可以通过SpriteRenderer.Sprite
访问当前精灵。这使您可以访问 Sprite.rect
属性 以及 Sprite.pixelsPerUnit
属性.
使用这两个属性,我们可以通过以下方式更新 BoxCollider2D 的大小:
private void UpdateBoxCollider(BoxCollider2D collider, Sprite newSprite)
{
collider.size = newSprite.rect.size / newSprite.pixelsPerUnit;
}
感谢@derHugo 和@Chipinators 的回答, 我采纳了 derHugo 的建议,马上就奏效了。 BoxCollider2D 也是根据动画完全独立计算的。对于 one/two 个动画,我只需要稍微修改一下。
再次感谢您的回答。 ;)