检测游戏对象的角落
本文关键字:角落 对象 游戏 检测 | 更新日期: 2023-09-27 18:13:52
我有一个脚本,可以通过触摸或鼠标旋转对象,但我想旋转对象时,鼠标越过对象的角落。我该怎么做呢?
我使用的代码是private float baseAngle = 0.0f;
void OnMouseDown(){
Vector3 pos = Camera.main.WorldToScreenPoint(transform.position);
pos = Input.mousePosition - pos;
baseAngle = Mathf.Atan2(pos.y, pos.x) * Mathf.Rad2Deg;
baseAngle -= Mathf.Atan2(transform.right.y, transform.right.x) *Mathf.Rad2Deg;
}
void OnMouseDrag(){
Vector3 pos = Camera.main.WorldToScreenPoint(transform.position);
pos = Input.mousePosition - pos;
float ang = Mathf.Atan2(pos.y, pos.x) *Mathf.Rad2Deg - baseAngle;
transform.rotation = Quaternion.AngleAxis(ang, Vector3.forward);
}
将不可见的GameObjects
或RectTransforms
放置在要旋转的对象的角上,并使用它们作为父对象的控件
这样做的一种方法是将碰撞器添加到对象的角落。
使用OnCollisionStay(),您可以在按下鼠标按钮时触发适当的函数。我自己也做过类似的事情,这种方法确实有效。
另一个疯狂的方法:
你可以在你点击的地方进行光线投射,如果你的光线投射在一个适当的距离内的角落(你可以根据它的尺寸计算),然后允许旋转点击