根据实际玩家精灵计算 BoxCollider2D

Posted

技术标签:

【中文标题】根据实际玩家精灵计算 BoxCollider2D【英文标题】:Calculate BoxCollider2D based on the actual player sprite 【发布时间】:2021-06-02 20:19:57 【问题描述】:

首先是我最初的情况:我正在做一个 2D 项目。播放器由一个 spritesheet 组成,并具有小动画。动画并不总是与玩家的空闲形式一样大。它在宽度和高度上稍微缩放。

现在我想知道是否可以根据每个精灵的实际大小来计算 BoxCollider2D。

这里有人可以就如何解决这种情况给我一些指导吗?

最好的问候:)

【问题讨论】:

您可以使用PolygonCollider2D 并随动画一起更新形状 (Points)。或者你使用CompositeCollider2D 并让它自动将多个精灵的对撞机“合并”成一个大对撞机 【参考方案1】:

假设您使用的是SpriteRenderer

您可以通过SpriteRenderer.Sprite 访问当前的Sprite。这使您可以访问Sprite.rect 属性以及Sprite.pixelsPerUnit 属性。

使用这两个属性,我们可以通过以下方式更新 BoxCollider2D 的大小:

private void UpdateBoxCollider(BoxCollider2D collider, Sprite newSprite)

    collider.size = newSprite.rect.size / newSprite.pixelsPerUnit;

【讨论】:

【参考方案2】:

感谢@derHugo 和@Chipinators 的回答, 我使用了 derHugo 的建议,它马上就奏效了。 BoxCollider2D 也完全独立地根据动画进行计算。使用一/两个动画,我只需要稍微润色一下。

再次感谢您的回答。 ;)

【讨论】:

以上是关于根据实际玩家精灵计算 BoxCollider2D的主要内容,如果未能解决你的问题,请参考以下文章

我小时候在我的玩家类中为我的玩家制作了一个碰撞箱精灵。如何在游戏场景的 didBegin 方法中访问该碰撞箱精灵?

玩家精灵在按住移动键时移动而无需输入

计算精灵根据需要行进的距离和行进速度改变大小的速度

war3 巨魔精灵 minimap

ActionScript3:我应该使用啥代码来阻止玩家控制的精灵移动?

使用固定的 SKPhysicsJoint 将作为孩子的平台检测命中框附加到玩家精灵会更改玩家的碰撞和检测位掩码