/// <summary> /// 当鼠标按下时触发(其实就是初始化_vec3Offset值,需要注意的是一切的位置坐标都是为了得到这个差值) /// </summary> private void onMouseDown() { //获取鼠标相对于摄像头的点击位置 Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition); Vector2 mousePos2D = new Vector2(mousePos.x, mousePos.y); hitRC = Physics2D.Raycast(mousePos2D, Vector2.zero); if (hitRC.collider != null && hitRC.transform.GetComponent <JigsawContainerCpt>() != null) { Collider2D jigsawCollider = hitRC.collider; Transform jigsawTransform = jigsawCollider.transform; //让被选中的物体停止移动 Rigidbody2D baseRB = jigsawTransform.GetComponent <Rigidbody2D>(); baseRB.velocity = Vector3.zero; baseRB.constraints = RigidbodyConstraints2D.FreezeAll; baseRB.constraints = RigidbodyConstraints2D.None; //在鼠标按下时,鼠标和物体在控件坐标在空间上的位置差 jigsawContainerCpt = jigsawTransform.GetComponent <JigsawContainerCpt>(); if (jigsawContainerCpt != null) { isSelect = true; vec3Offset = jigsawTransform.position - new Vector3(mousePos.x, mousePos.y); jigsawContainerCpt.setIsSelect(true); } } }
/// <summary> /// 鼠标抬起时 /// </summary> private void onMouseUp() { isSelect = false; if (jigsawContainerCpt != null) { jigsawContainerCpt.setIsSelect(false); } }