Esempio n. 1
0
    void Update()
    {
        //連射速度
        shotInterval = shotInterval + Time.deltaTime * 1;

        if (shotInterval >= AttackSpeed)
        {
            shotInterval = 0;

            float ErrorX = Random.Range(-AngleError, AngleError);
            float ErrorY = Random.Range(-AngleError, AngleError);

            // サーチエリアにプレイヤーが居る場合のみ発射
            if (Sys.getPosition() != null)
            {
                RaycastHit hit;

                if (Physics.Linecast(transform.position, Sys.getPosition(), out hit))
                {
                    if (hit.transform.CompareTag("Player") || hit.transform.CompareTag("Shield") || hit.transform.CompareTag("Ally") || hit.transform.CompareTag("Bullet"))
                    {
                        if (ForwardNum == 0)
                        {
                            GameObject bullet   = (GameObject)Instantiate(bulletPrefab, transform.position, Quaternion.Euler(transform.parent.eulerAngles.x + ErrorX, transform.parent.eulerAngles.y + ErrorY, 0));
                            Rigidbody  bulletRb = bullet.GetComponent <Rigidbody>();
                            Transform  bulletTr = bullet.GetComponent <Transform>();
                            bulletRb.AddForce(bullet.transform.forward * shotSpeed);

                            //射撃されてから3秒後に銃弾のオブジェクトを破壊する
                            Destroy(bullet, 3.0f);
                            Audio.PlayOneShot(Audio.clip);
                        }
                        if (ForwardNum == 1)
                        {
                            GameObject bullet   = (GameObject)Instantiate(bulletPrefab, transform.position, Quaternion.Euler(0, transform.parent.eulerAngles.y + ErrorX, transform.parent.eulerAngles.z + ErrorY));
                            Rigidbody  bulletRb = bullet.GetComponent <Rigidbody>();
                            Transform  bulletTr = bullet.GetComponent <Transform>();
                            bulletRb.AddForce(bullet.transform.right * shotSpeed);

                            //射撃されてから3秒後に銃弾のオブジェクトを破壊する
                            Destroy(bullet, 3.0f);
                            Audio.PlayOneShot(Audio.clip);
                        }
                    }
                }
            }
        }
    }
Esempio n. 2
0
    void Update()
    {
        if (Sys.getFlag() == 1)
        {
            //Sys = Local.GetComponent<SearchArea2>();

            //プレイヤーの方向差分
            var Direction = Sys.getPosition() - transform.position;

            //y軸固定
            Direction.y = 0;

            //よくわからん
            Quaternion Rotation = Quaternion.LookRotation(Direction);

            // forwardの向きがおかしい場合補正をかける
            float LocalNum = Rotation.eulerAngles.y;

            if (ForwardNum == 1)
            {
                LocalNum = LocalNum - 90;
            }
            if (ForwardNum == 5)
            {
                LocalNum = LocalNum + 90;
            }

            // 補正実行
            Rotation = Quaternion.Euler(new Vector3(Rotation.eulerAngles.x, LocalNum, Rotation.eulerAngles.z));


            //そっちへ向く
            transform.rotation = Quaternion.Slerp(transform.rotation, Rotation, 5f * Time.deltaTime);
        }
    }
Esempio n. 3
0
    void Update()
    {
        //連射速度
        LocalShotInterval = LocalShotInterval + 1 * Time.deltaTime;

        if (LocalShotInterval >= ShotInterval)
        {
            LocalShotInterval = ShotInterval;
        }

        // サーチエリアにプレイヤーが居る場合のみ発射
        if (Sys.getPosition() != null)
        {
            RaycastHit hit;

            if (Physics.Linecast(transform.position, Sys.getPosition(), out hit))
            {
                if (hit.transform.CompareTag("Player") || hit.transform.CompareTag("Shield") || hit.transform.CompareTag("Ally"))
                {
                    if (ShotInterval == LocalShotInterval)
                    {
                        //自分の位置とターゲットの位置の差分を取得
                        Vector3 relativePos = Sys.getPosition() - transform.position;

                        //よくわからん
                        Quaternion rotation = Quaternion.LookRotation(relativePos);

                        GameObject Missile   = (GameObject)Instantiate(MissilePrefab, transform.position, rotation /*Quaternion.Euler(Sys.getPosition())*/);
                        Rigidbody  MissileRb = Missile.GetComponent <Rigidbody>();

                        //射撃されてから2秒後に銃弾のオブジェクトを破壊する
                        Destroy(Missile, 10.0f);

                        LocalShotInterval = 0;
                    }
                }
            }
        }
    }
Esempio n. 4
0
    void Update()
    {
        if (Sys.getFlag() == 1)
        {
            //プレイヤーの方向差分
            var Direction = Sys.getPosition() - transform.position;



            //よくわからん
            Quaternion Rotation = Quaternion.LookRotation(Direction);


            float Angle = 360 - Rotation.eulerAngles.x;

            if (Angle >= 180)
            {
                Angle = Angle - 360;
            }

            if (Angle < 0)
            {
                if (-Angle > MaxAngle)
                {
                    Angle = -MaxAngle;
                }
            }
            else
            {
                if (Angle > MaxAngle)
                {
                    Angle = MaxAngle;
                }
            }


            if (ForwardNum == 1)
            {
                transform.localRotation = Quaternion.Euler(0, 0, Angle);
            }
        }
    }
Esempio n. 5
0
    void Update()
    {
        if (Sys.getFlag() == 1)
        {
            //プレイヤーの方向差分
            var Direction = Sys.getPosition() - transform.position;

            //y軸固定
            Direction.y = 0;

            //よくわからん
            Quaternion Rotation = Quaternion.LookRotation(Direction);



            // 補正実行
            Rotation = Quaternion.Euler(new Vector3(Rotation.eulerAngles.x, Rotation.eulerAngles.y - 270, Rotation.eulerAngles.z));


            //そっちへ向く
            transform.rotation = Quaternion.Slerp(transform.rotation, Rotation, 5f * Time.deltaTime);
        }
    }