我试图用鼠标拖动游戏对象,同时在拖动时保持对象和鼠标之间的距离。我遇到的问题是,当远处进入我的代码时,会出现图形故障。我不知道为什么。
我尝试更改坐标的计算顺序,以及使用Unity相机方法,例如WorldToScreenPoint((来计算游戏对象。
代码在没有考虑偏移量的情况下工作正常,但我想保留偏移量,因此它尽可能准确。
public void DragObject(BaseEventData eventData)
{
if (!bDebugEnabled) return;
offset = Input.mousePosition - eventData.selectedObject.transform.position;
eventData.selectedObject.transform.position = Input.mousePosition + offset;
}
我希望游戏对象在保持与鼠标的偏移距离的同时移动。例如,拖动时将保持游戏对象的一角。
实际结果是游戏对象在靠近鼠标的两个位置之间捕捉。结果可以在这里找到
我想你的DragObject(BaseEventData eventData)
方法每帧都调用。 因此,offset
每帧都会重新计算,并且由于您移动了gameObject
,因此情况有所不同。 仅当玩家最初单击对象时,才应计算offset
。
offset = Input.mousePosition - eventData.selectedObject.transform.position;
此行应位于仅在初始单击对象时调用的方法上,其余部分应在整个拖动期间更新。