コード例 #1
0
ファイル: RoleCtrl.cs プロジェクト: ming81/FrameWork
    // Update is called once per frame
    void Update()
    {
        if (Input.GetMouseButton(0))
        {
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hitinfo;
            if (Physics.Raycast(ray, out hitinfo, Mathf.Infinity, 1 << LayerMask.NameToLayer("Item")))
            {
                BoxCtrl boxCtrl = hitinfo.collider.GetComponent <BoxCtrl>();
                boxCtrl.OnHit();
                Debug.Log(hitinfo.collider.name);
            }
        }

        #region Òƶ¯

        if (cc == null)
        {
            return;
        }

        if (Input.GetMouseButton(0) || Input.touchCount == 1)
        {
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hitinfo;
            if (Physics.Raycast(ray, out hitinfo, (int)LayerMask.GetMask("Ground")))
            {
                target      = hitinfo.point;
                rotateSpeed = 0;
            }
        }

        if (!cc.isGrounded)
        {
            cc.Move(Vector3.up * -1000);
        }
        if (target != Vector3.zero)
        {
            if (Vector3.Distance(transform.position, target) > 0.1f)
            {
                Vector3 dirction = (target - transform.position).normalized * speed * Time.deltaTime;

                if (rotateSpeed <= 1)
                {
                    rotateSpeed += 5f;
                    targetRotate = Quaternion.LookRotation(dirction);
                }
                transform.rotation = Quaternion.Lerp(transform.rotation, targetRotate, Time.deltaTime * rotateSpeed);
                cc.Move(dirction);
            }
        }

        #endregion
        CameraAutoFollow();
    }
コード例 #2
0
    void Update()
    {
        if (CurrRoleFSMMgr != null)
        {
            CurrRoleFSMMgr.OnUpdate();
        }

        //如果角色没有AI 直接返回
        if (CurrRoleAI == null)
        {
            return;
        }
        CurrRoleAI.DoAI();

        if (CharacterController == null)
        {
            return;
        }

        //让角色贴着地面
        if (!CharacterController.isGrounded)
        {
            CharacterController.Move((transform.position + new Vector3(0, -1000, 0)) - transform.position);
        }

        if (Input.GetMouseButtonUp(1))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

            RaycastHit hit;
            if (Physics.Raycast(ray, out hit, Mathf.Infinity, 1 << LayerMask.NameToLayer("Item")))
            {
                BoxCtrl boxCtrl = hit.collider.GetComponent <BoxCtrl>();
                if (boxCtrl != null)
                {
                    boxCtrl.Hit();
                }
            }
        }

        //让角色贴着地面
        if (!CharacterController.isGrounded)
        {
            CharacterController.Move((transform.position + new Vector3(0, -1000, 0)) - transform.position);
        }

        if (CurrRoleType == RoleType.MainPlayer)
        {
            CameraAutoFollow();
        }

        AutoSamllMap();
    }
コード例 #3
0
    /// <summary>
    /// 按键检测
    /// </summary>
    void KeyDetection()
    {
        //鼠标右键点击判断
        if (Input.GetMouseButtonDown(1))
        {
            //获取摄像机发出的一条射线
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hitInfo;
            //判断射线是否相交
            if (Physics.Raycast(ray, out hitInfo))
            {
                //判断该射线是否与地面相交
                if (hitInfo.collider.gameObject.name.Equals("Ground", System.StringComparison.CurrentCultureIgnoreCase))
                {
                    mTargetPos   = hitInfo.point;
                    isMoveOver   = false;
                    mRotateSpeed = 0.02f;
                }
            }
        }
        else if (Input.GetMouseButtonDown(0))
        {
            //拾取单个物体
            #region
            //鼠标左键拾取物体
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hitInfo;
            //bitmask
            if (Physics.Raycast(ray, out hitInfo, Mathf.Infinity, 1 << LayerMask.NameToLayer("Item")))
            {
                BoxCtrl boxCtrl = hitInfo.collider.gameObject.GetComponent <BoxCtrl>();
                if (boxCtrl != null)
                {
                    boxCtrl.Hit();
                }
            }
            #endregion

            //拾取多个物体
            #region
            //当前角色发出一条射线
            // Collider[] colliders= Physics.OverlapSphere(transform.position,4f,1<<LayerMask.NameToLayer("Item"));
            // if(colliders.Length>0)
            // {
            //     foreach (var item in colliders)
            //     {
            //         Debug.Log("找到了"+item.gameObject.name);
            //     }
            // }
            #endregion
        }
    }
コード例 #4
0
ファイル: TestSceneManager.cs プロジェクト: ming81/FrameWork
 // Update is called once per frame
 void Update()
 {
     if (currentCount < maxCount)
     {
         if (Time.time > maxTime)
         {
             GameObject go = Instantiate <GameObject>(boxPrefab);
             go.transform.SetParent(boxParent);
             go.transform.position = boxCreateArea.TransformPoint(Random.Range(-0.5f, 0.5f), 0, Random.Range(-0.5f, 0.5f));
             BoxCtrl boxCtrl = go.GetComponent <BoxCtrl>();
             boxCtrl.Onhit = HitBox;
             maxTime      += 0.5f;
             currentCount++;
         }
     }
 }
コード例 #5
0
    void Update()
    {
        if (m_CurrCount < m_MaxCount)
        {
            if (Time.time > m_NextCloneTime)
            {
                m_NextCloneTime = Time.time + 2f;

                //克隆
                GameObject objClone = Instantiate(m_BoxPrefab) as GameObject;

                objClone.transform.parent   = boxParent;
                objClone.transform.position = transCreateBox.TransformPoint(new Vector3(Random.Range(-0.5f, 0.5f), 0, Random.Range(-0.5f, 0.5f)));
                BoxCtrl boxCtrl = objClone.GetComponent <BoxCtrl>();
                if (boxCtrl != null)
                {
                    boxCtrl.OnHit = BoxHit;
                    m_CurrCount++;
                }
            }
        }
    }
コード例 #6
0
    void Update()
    {
        //如果当前角色没有AI,直接返回
        if (CurrRoleAI == null)
        {
            return;
        }
        CurrRoleAI.DoAI();

        if (CurrRoleFSMMgr != null)
        {
            CurrRoleFSMMgr.OnUpdate();
        }

        if (CharacterController == null)
        {
            return;
        }

        //让角色贴着地面
        if (!CharacterController.isGrounded)
        {
            CharacterController.Move((transform.position + new Vector3(0, -1000, 0)) - transform.position);
        }


        //if (Input.GetMouseButtonUp(1))
        //{
        //    Collider[] colliderArr = Physics.OverlapSphere(transform.position, 3, 1 << LayerMask.NameToLayer("Item"));
        //    if (colliderArr.Length > 0)
        //    {
        //        for (int i = 0; i < colliderArr.Length; i++)
        //        {
        //            Debug.Log("找到了附近的箱子" + colliderArr[i].gameObject.name);
        //        }
        //    }
        //}

        if (Input.GetMouseButtonUp(1))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            //RaycastHit[] hitArr = Physics.RaycastAll(ray, Mathf.Infinity, 1 << LayerMask.NameToLayer("Item"));

            //if (hitArr.Length > 0)
            //{
            //    for (int i = 0; i < hitArr.Length; i++)
            //    {
            //        Debug.Log("找到了" + hitArr[i].collider.gameObject.name);
            //    }
            //}

            RaycastHit hit;
            if (Physics.Raycast(ray, out hit, Mathf.Infinity, 1 << LayerMask.NameToLayer("Item")))
            {
                BoxCtrl boxCtrl = hit.collider.GetComponent <BoxCtrl>();
                if (boxCtrl != null)
                {
                    boxCtrl.Hit();
                }
            }
        }

        //让角色贴着地面
        if (!CharacterController.isGrounded)
        {
            CharacterController.Move((transform.position + new Vector3(0, -1000, 0)) - transform.position);
        }

        if (CurRoleType == RoleType.MainPlayer)
        {
            CameraAutoFollow();
        }

        //if (Input.GetKeyUp(KeyCode.R))
        //{
        //    ToRun();
        //}
        //else if (Input.GetKeyUp(KeyCode.N))
        //{
        //    ToIdle();
        //}
        //else if (Input.GetKeyUp(KeyCode.A))
        //{
        //    ToAttack();
        //}
        //else if (Input.GetKeyUp(KeyCode.H))
        //{
        //    ToHurt();
        //}
        //else if (Input.GetKeyUp(KeyCode.D))
        //{
        //    ToDie();
        //}
    }