对于2D游戏,我有这样一段代码:
Vector3 mousePos2 = Camera.main.ScreenToWorldPoint(Input.mousePosition);
mousePos2.z = Camera.main.nearClipPlane;
Vector3 cardPos = transform.position;
Vector2 direction = mousePos2 - cardPos;
Quaternion targetRotation = Quaternion.LookRotation(direction);
float degreesPerSecond = 90.0f * Time.deltaTime;
transform.rotation = Quaternion.RotateTowards(transform.rotation, targetRotation, degreesPerSecond);
当我拖动卡片时,它会将卡片向鼠标方向旋转。就像this一样。我有一个带有boxcollider 2d的CardHolder,如果我将它们悬停在上面,它会工作得很好。
然而,一旦我悬停在右边的背景(没有碰撞器),卡片在Y轴上旋转+180°(如果我在左边,则为-180°),就好像鼠标在Z平面上很远。
它只会发生,如果我不是在一个碰撞器和游戏板上,如果我把它拖到背景之外(游戏的限制)卡旋转如预期。
我试过了
- 将mousePos2.z更改为正值和零。
- 在背景上加一个对撞机,它“"“工作”"”但是很多事情都搞砸了。
- 将所有Vector 3更改为Vector 2,问题仍然相同。
问题从何而来,我该怎么办?
1条答案
按热度按时间tsm1rwdh1#
找到解决方案;
我有这个:
如果卡不在卡架上,我设置一个新的X位置(从卡片组中“弹出”)。
这就是为什么在背景上拖动时,卡X的位置是由OnMouseOver()强制设置的。
我将其替换为:
这样,它只发射一次,而不是如果卡是放置或拖过什么。