我一直在为2D Unity游戏改变碰撞器编程无数的角色动画,但我很难弄清楚如何为俯卧动画找到旋转矩形的新中心。旋转矩形不是问题,因为我只是将矩形的当前长度设置为新的宽度,反之亦然。问题是我的新矩形落到了地面,因为它的中心(或者#34;偏移,#34;正如Unity所说的那样)与默认对撞机相同;当我按下俯卧按钮时,它会短暂地在空中。
基本上,我希望在我的游戏中发生以下情况:
我的角色与他的默认长方形对撞机直立,由于重力而与地面相撞。
我按下一个按钮,矩形被重新分配,使其看起来旋转90度,但是它的新中心使得我的角色在整个时间内仍然接触地面。
< / LI> 醇>这是一张希望更好地解释事情的图片:https://imgur.com/d9BaJ9R
我能够使用类似的逻辑编写一个蹲伏动画,但无法解决如何将其应用于此场景的问题。这是成功的代码:
boxCollider.size = new Vector2(boxCollider.size.x, boxCollider.size.y * .5f);
boxCollider.offset = new Vector2(boxCollider.offset.x, boxCollider.offset.y - (boxCollider.size.y * .5f));
答案 0 :(得分:0)
你需要这个吗?
交换维度:
boxCollider.size = new Vector2(boxCollider.size.y, boxCollider.size.x);
将新的中心高度设置为新矩形的半高(保持x相同):
boxCollider.offset = new Vector2(boxCollider.offset.x, boxCollider.size.y * .5f);
答案 1 :(得分:0)
感谢MBo帮我重新思考一下。答案实际上与我之前发布的代码非常相似。
boxCollider.size = new Vector2(boxCollider.size.y, boxCollider.size.x);
boxCollider.offset = new Vector2(boxCollider.offset.x, boxCollider.offset.y - (boxCollider.size.y * .5f));
这样可以正确设置新的矩形中心,当玩家再次站起来时,当然可以轻松反转。