コード例 #1
0
 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);
 }
コード例 #2
0
    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);
        }
    }