我有一个可以通过触摸或鼠标在其上旋转对象的脚本,但我想在鼠标越过对象的角落时旋转对象。我怎么能这样做?
我正在使用的代码是
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);
}
答案 0 :(得分:0)
将不可见的GameObjects
或RectTransforms
放在要旋转的对象的角上,并将它们用作父对象的控件。
答案 1 :(得分:0)
这样做的一种方法是将碰撞器添加到对象的角落。
使用OnCollisionStay(),您可以在按下鼠标按钮时触发相应的功能。我自己也做过类似的事,这种方式确实有用。
疯狂的另一种方法:
如果你的光线投射距离角落适当的距离(你可以根据它的尺寸计算),你可以在你点击的地方进行光线投射,然后在点击时允许旋转。