public void SetModelObj(GameObject model, string name) { m_GameObj = model; m_Trans = model.transform; this.name = name; m_Driver = m_Trans.AddOrGetComponent <MeDriver>(); m_Driver.SetUnit(this); }
void Update() { if (!canApart || UIManager.GetInstance().IsVisible(ProConst.PRO_DETAIL_UIFORM)) { return; } //当鼠标点击物体时,物体随鼠标一起移动;当鼠标再次点击时,放下物体。 if (Input.GetMouseButtonDown(0)) { //创建一条摄像机到屏幕的射线 ray = GlobalObj.mainCamera.ScreenPointToRay(Input.mousePosition); var layer = LayerMask.NameToLayer(SysDefine.ModelLayer); //若碰到物体 if (Physics.Raycast(ray, out hit, 100f, 1 << layer)) { flag = !flag; } } if (flag && hit.collider) { curSelectedTrans = hit.collider.transform; //缓存零件信息 if (!colliderDic.ContainsKey(hit.collider.transform)) { colliderDic.Add(hit.collider.transform, new CachedInfo(curSelectedTrans.parent, curSelectedTrans.position)); } Vector3 screenPos = GlobalObj.mainCamera.WorldToScreenPoint(curSelectedTrans.position); Vector3 worldPos = GlobalObj.mainCamera.ScreenToWorldPoint( new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPos.z) ); curSelectedTrans.position = worldPos; curDriver = curSelectedTrans.GetMeDrive(); if (curDriver) { curDriver.SetDriveCapability(false); } curSelectedTrans.SetParent(ModelMgr.instance.modelRoot); } }