void Update()
 {
     // すべての敵を倒したらクリアを表示する
     if (m_enemyNum == m_maxEnemy)
     {
         m_resultTextController.EndState = true;
         m_resultTextController.ClearText();
     }
     else
     {
         if (m_resultTextController.EndState == false && m_buttonController.StopState == false)
         {
             // マウスの左クリックで撃つ
             if (Input.GetButtonDown("Fire1"))
             {
                 ShotEnemy();
             }
         }
     }
 }
Exemple #2
0
    void Update()
    {
        // すべての敵を倒したらクリアを表示する
        if (m_enemyNum == m_maxEnemy)
        {
            m_resultTextController.EndState = true;
            m_resultTextController.ClearText();
        }
        else
        {
            var pointer = Pointer; // コントローラーを取得
                                   // コントローラーがない or LineRendererがなければ何もしない
            if (pointer == null || _LaserPointerRenderer == null)
            {
                return;
            }
            // コントローラー位置からRayを飛ばす
            Ray pointerRay = new Ray(pointer.position, pointer.forward);

            // レーザーの起点
            _LaserPointerRenderer.SetPosition(0, pointerRay.origin);

            RaycastHit hitInfo;
            Vector3    hitPosition;
            GameObject item;
            Vector3    TargetPosition = GameObject.Find("Player").transform.position;

            if (Physics.Raycast(pointerRay, out hitInfo, _MaxDistance, LayerMask.GetMask("Enemy")))
            {
                // Rayがヒットしたらそこまで
                _LaserPointerRenderer.SetPosition(1, hitInfo.point);

                // Cursolを表示する
                m_cursor.transform.position = hitInfo.point;
                m_cursor.SetActive(true);
                m_cursor.transform.LookAt(TargetPosition);

                if (OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger) && m_resultTextController.EndState == false && m_buttonController.StopState == false)
                {
                    hitPosition = hitInfo.point;
                    hitInfo.collider.transform.root.gameObject.GetComponentInChildren <Canvas>().GetComponentInChildren <Slider>().value -= 1;

                    //敵に攻撃した時のParticleを再生する。
                    Instantiate(m_shotEffect, hitPosition, Quaternion.identity);
                    m_hitSound.PlaySoundAt(hitPosition);

                    if (hitInfo.collider.transform.root.gameObject.GetComponentInChildren <Canvas>().GetComponentInChildren <Slider>().value == 0)
                    {
                        //敵のオブジェクトを消す
                        Destroy(hitInfo.collider.transform.root.gameObject);
                        m_enemyNum += 1;

                        //回復アイテムを落とす
                        int num = Random.Range(1, 100);
                        if (num <= 40)
                        {
                            item = Instantiate(m_item) as GameObject;
                            item.transform.position = new Vector3(hitPosition.x, hitPosition.y + 1, hitPosition.z);
                            float itemRotx = Random.Range(0, 360);
                            float itemRoty = Random.Range(0, 360);
                            float itemRotz = Random.Range(0, 360);
                            item.transform.rotation = Quaternion.Euler(itemRotx, itemRoty, itemRotz);
                        }
                    }
                }
            }
            else if (Physics.Raycast(pointerRay, out hitInfo, _MaxDistance, LayerMask.GetMask("Item")))
            {
                // Rayがヒットしたらそこまで
                _LaserPointerRenderer.SetPosition(1, hitInfo.point);

                m_cursor.transform.position = hitInfo.point;
                m_cursor.SetActive(true);
                m_cursor.transform.LookAt(TargetPosition);

                if (OVRInput.GetDown(OVRInput.Button.PrimaryIndexTrigger) && m_resultTextController.EndState == false && m_buttonController.StopState == false)
                {
                    hitPosition = hitInfo.point;
                    Instantiate(m_itemEffect, hitPosition, Quaternion.identity);
                    m_itemSound.PlaySoundAt(hitPosition);
                    Destroy(hitInfo.collider.gameObject);
                    m_powerTextController.NowPowerUp(m_itemPower);
                }
            }
            else
            {
                // Rayがヒットしなかったら向いている方向にMaxDistance伸ばす
                _LaserPointerRenderer.SetPosition(1, pointerRay.origin + pointerRay.direction * _MaxDistance);

                // Cursolを非表示にする
                m_cursor.SetActive(false);
            }
        }
    }