修复自动吸附的Bug

This commit is contained in:
YangHua 2023-08-29 09:29:28 +08:00
parent d685b9af8d
commit 7bcf223b2a
2 changed files with 19 additions and 12 deletions

View File

@ -1649,7 +1649,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 8124e469eb4c87f46ad8cb8a995694a6, type: 3}
m_Name:
m_EditorClassIdentifier:
oriObjectPrefab: {fileID: 5015601091524974045, guid: 8dc9719f2b7eb2f4ea642a026d7effa9, type: 3}
oriObjectPrefab: {fileID: 5920286553495436801, guid: 1d4e4bb2ce1ec2e43b45ba5872d750fc, type: 3}
isOnUPos: 0
currentUPosItem: {fileID: 0}
uPosManger: {fileID: 606617863}
@ -2406,6 +2406,8 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: b73da4762bf986646bd42484bee07dc3, type: 3}
m_Name:
m_EditorClassIdentifier:
isopen: 0
TextMeshProUGUI: {fileID: 0}
--- !u!33 &925365234363722706
MeshFilter:
m_ObjectHideFlags: 0

View File

@ -26,13 +26,10 @@ public class DragController : MonoBehaviour, IBeginDragHandler, IEndDragHandler,
//public DragTest1 currentDevice;
public bool isOnUPos = false;
public UPosItem currentUPosItem;
public UPosManger uPosManger;
public GameObject cube;
// Start is called before the first frame update
@ -48,7 +45,6 @@ public class DragController : MonoBehaviour, IBeginDragHandler, IEndDragHandler,
OnRay(target.gameObject);
};
Debug.Log(cube.GetComponent<MeshRenderer>().bounds.size.x);
}
public void OnBeginDrag(PointerEventData eventData)
{
@ -74,10 +70,10 @@ public class DragController : MonoBehaviour, IBeginDragHandler, IEndDragHandler,
public void OnEndDrag(PointerEventData eventData)
{
EndDragAction?.Invoke(targetObject);
if (!isOnUPos)
{
Destroy(targetObject.gameObject);
}
//if (!isOnUPos)
//{
// Destroy(targetObject.gameObject);
//}
CountUPos();
currentUPosItem = null;
targetObject = null;
@ -90,6 +86,11 @@ public class DragController : MonoBehaviour, IBeginDragHandler, IEndDragHandler,
private void CountUPos()
{
if (targetObject == null) return;
if (currentUPosItem == null)
{
Destroy(targetObject.gameObject);
return;
}
int index = uPosManger.CountUPos(targetObject.volume, currentUPosItem.ID);
if (!CountUPos(targetObject, index))
Destroy(targetObject.gameObject);
@ -121,6 +122,7 @@ public class DragController : MonoBehaviour, IBeginDragHandler, IEndDragHandler,
private void OnRay(GameObject target)
{
target.transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition + new Vector3(0, 0, 5));
currentUPosItem = null;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hitInfo;
if (Physics.Raycast(ray, out hitInfo))
@ -130,16 +132,19 @@ public class DragController : MonoBehaviour, IBeginDragHandler, IEndDragHandler,
currentUPosItem = hitInfo.collider.GetComponent<UPosItem>();
if (!EventSystem.current.IsPointerOverGameObject())
{
if (!currentUPosItem.isOccupied)
if (currentUPosItem != null && !currentUPosItem.isOccupied)
{
target.transform.position = hitInfo.point;
isOnUPos = true;
}
else
{
}
}
}
else
{
isOnUPos = false;
currentUPosItem = null;
}
}
}