예제 #1
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Q))
        {
            actionMode_ = !actionMode_;
            sc_.ModeChange();
            rock_     = null;
            Keeprock_ = false;
        }
        if (!actionMode_)
        {
            // 左に移動
            if (Input.GetKey(KeyCode.W))
            {
                zPosition += 6.0f * Time.deltaTime;
                //this.transform.Translate(-0.1f, 0.0f, 0.0f);
            }
            // 右に移動
            if (Input.GetKey(KeyCode.S))
            {
                zPosition -= 6.0f * Time.deltaTime;
            }
            // 前に移動
            if (Input.GetKey(KeyCode.A))
            {
                angle_ -= 3.0f * Time.deltaTime;
                //this.transform.Translate(0.0f, 0.0f, 0.1f);
            }
            // 後ろに移動
            if (Input.GetKey(KeyCode.D))
            {
                angle_ += 3.0f * Time.deltaTime;
                //this.transform.Translate(0.0f, 0.0f, -0.1f);
            }


            //transform.position = obj.transform.position;
            x = radius * Mathf.Sin(angle_) + obj.transform.position.x;
            z = zPosition + obj.transform.position.z;
            y = radius * Mathf.Cos(angle_) + obj.transform.position.y;

            transform.position = new Vector3(x, y, z);

            Vector3 _look = obj.transform.position;
            _look.z = z;
            this.transform.LookAt(_look);
        }
        else
        {
            if (Input.GetKeyDown(KeyCode.K))
            {
                hakai_    = !hakai_;
                Keeprock_ = false;
                if (hakai_)
                {
                    var kari = this.GetComponent <MeshRenderer>();
                    kari.material = _break;
                }
                else
                {
                    var kari = this.GetComponent <MeshRenderer>();
                    kari.material = _Idou;
                }
            }

            if (Input.GetMouseButtonDown(0))                            //マウスがクリックされたら
            {
                Ray ray = camera.ScreenPointToRay(Input.mousePosition); //マウスのポジションを取得してRayに代入

                if (Physics.Raycast(ray, out hit))                      //マウスのポジションからRayを投げて何かに当たったらhitに入れる
                {
                    string objectName = hit.collider.gameObject.name;   //オブジェクト名を取得して変数に入れる
                    if (hakai_)
                    {
                        rock_ = hit.collider.gameObject.GetComponent <o_Rock>();
                        rock_.RockDestroy();
                    }
                    else
                    {
                        rock_ = hit.collider.gameObject.GetComponent <o_Rock>();
                        rock_.OnSelected();
                        Keeprock_ = true;
                    }
                }
            }

            if (Keeprock_)
            {
                if (Input.GetKeyDown(KeyCode.W))
                {
                    Debug.Log(transform.localEulerAngles.y);
                    if (transform.transform.localEulerAngles.y > 269)
                    {
                        angle_ -= 0.3f;
                        //rock_.RockMove(o_RockManager.MOVE.UP);
                        rock_.RockMove(Vector3.up);
                    }
                    else
                    {
                        angle_ += 0.3f;
                        //rock_.RockMove(o_RockManager.MOVE.UP);
                        rock_.RockMove(Vector3.up);
                    }
                }

                if (Input.GetKeyDown(KeyCode.S))
                {
                    Debug.Log(transform.transform.localEulerAngles.y);
                    if (transform.localEulerAngles.y > 269)
                    {
                        angle_ += 0.3f;
                        //rock_.RockMove(o_RockManager.MOVE.DOWN);
                        rock_.RockMove(Vector3.down);
                    }
                    else
                    {
                        angle_ -= 0.3f;
                        // rock_.RockMove(o_RockManager.MOVE.DOWN);
                        rock_.RockMove(Vector3.down);
                    }
                }

                if (Input.GetKeyDown(KeyCode.A))
                {
                    Debug.Log(transform.transform.localEulerAngles.y);
                    if (transform.localEulerAngles.y < 269)
                    {
                        zPosition += 0.5f;
                        rock_.RockMove(o_RockManager.MOVE.FRONT);
                    }
                    else
                    {
                        zPosition -= 0.5f;
                        rock_.RockMove(o_RockManager.MOVE.BACK);
                    }
                }

                if (Input.GetKeyDown(KeyCode.D))
                {
                    Debug.Log(transform.transform.localEulerAngles.y);
                    if (transform.localEulerAngles.y > 269)
                    {
                        zPosition += 0.5f;
                        rock_.RockMove(o_RockManager.MOVE.FRONT);
                    }
                    else
                    {
                        zPosition -= 0.5f;
                        rock_.RockMove(o_RockManager.MOVE.BACK);
                    }
                }
            }
            else
            {
                if (Input.GetKey(KeyCode.W))
                {
                    radius -= 4.0f * Time.deltaTime;
                    //this.transform.Translate(-0.1f, 0.0f, 0.0f);
                }

                if (Input.GetKey(KeyCode.S))
                {
                    radius += 4.0f * Time.deltaTime;
                    //this.transform.Translate(-0.1f, 0.0f, 0.0f);
                }
            }
            x = radius * Mathf.Sin(angle_) + obj.transform.position.x;
            z = zPosition + obj.transform.position.z;
            y = radius * Mathf.Cos(angle_) + obj.transform.position.y;

            transform.position = new Vector3(x, y, z);

            //カメラの位置計算
            x = (radius + Camera_radius) * Mathf.Sin(angle_) + obj.transform.position.x;
            z = zPosition + obj.transform.position.z;
            y = (radius + Camera_radius) * Mathf.Cos(angle_) + obj.transform.position.y;

            camera.transform.position = new Vector3(x, y, z);
        }
    }