Esempio n. 1
0
    IEnumerator Shot()
    {
        GameObject bullet;

        //animator.SetTrigger("Shoot");

        Parent.GetComponent <Character_Parameters>().Reverse_Damage(); //ダメージを受けないようにする

        bullet = GameObject.Instantiate(bullet_Prefab);                //弾生成
        //MC.AddExistBullet(bullet);//現在の弾数を増やす
        bullet.GetComponent <Attack_Parameter>().Parent = this.Parent; //もらった親を渡しておく必要がある

        //MPの処理
        pcVR.SetMP(pcVR.GetMP() - GetSMP());

        //弾を飛ばす処理
        bullet.transform.position = transform.position;                                                                       //Muzzleの位置
        bullet.transform.rotation = Quaternion.LookRotation(Parent.transform.TransformDirection(Vector3.forward).normalized); //回転させて弾頭を進行方向に向ける

        //効果音と演出
        if (!SE.isPlaying)
        {
            SE.PlayOneShot(SE.clip);//SE
        }

        Destroy(bullet, 2);

        yield return(new WaitForSeconds(2.0f));                        //撃った後の硬直

        Parent.GetComponent <Character_Parameters>().Reverse_Damage(); //ダメージを受けるようにする
    }
Esempio n. 2
0
    IEnumerator Shot()
    {
        GameObject bullet;

        //animator.SetTrigger("Shoot");

        //Target = GameObject.FindGameObjectWithTag("Enemy");

        bullet = GameObject.Instantiate(bullet_Prefab);                //弾生成
        //MC.AddExistBullet(bullet);//現在の弾数を増やす
        bullet.GetComponent <Attack_Parameter>().Parent = this.Parent; //もらった親を渡しておく必要がある

        //MPの処理
        pcVR.SetMP(pcVR.GetMP() - GetSMP());

        //弾を飛ばす処理
        //bullet.GetComponent<HomingVR>().TargetSet(Target);//ホーミングのターゲットをセット

        //bullet.transform.position = Camera.main.transform.position + Camera.main.transform.TransformDirection(Vector3.forward) * 2;//Muzzleの位置
        bullet.transform.position = HandR.transform.position + HandR.transform.TransformDirection(Vector3.forward);//Muzzleの位置
        //bullet.transform.rotation = Quaternion.LookRotation(Parent.transform.TransformDirection(Vector3.forward).normalized);//回転させて弾頭を進行方向に向ける


        //カメラとキャラの向きが90°以上ずれてたら
        //if (Vector3.Dot(pcVR.direction.normalized, Parent.transform.TransformDirection(Vector3.forward).normalized) < 0)//二つのベクトル間の角度が90°以上(たぶん)
        //{
        //    bullet.GetComponent<Rigidbody>().velocity = Parent.transform.TransformDirection(Vector3.forward).normalized * bullet.GetComponent<Attack_Parameter>().speed;//キャラの向いてる方向
        //}
        //else
        //{
        //    bullet.GetComponent<Rigidbody>().velocity = (Camera.main.ScreenToWorldPoint(new Vector3(Screen.width / 2, Screen.height / 2, 50)) - transform.position).normalized * bullet.GetComponent<Attack_Parameter>().speed;//画面の真ん中
        //}
        ////注目中だったら
        //if (pcVR.GetF_Watch())
        //{
        //    //ちょっと上を狙わないと地面に向かってく
        //    bullet.GetComponent<Rigidbody>().velocity = (Camera.main.GetComponent<Z_Camera>().Target.transform.position + new Vector3(0, Camera.main.GetComponent<Z_Camera>().Target.transform.localScale.y, 0) - transform.position).normalized * bullet.GetComponent<Attack_Parameter>().speed;//敵の方向
        //}

        //bullet.GetComponent<Rigidbody>().velocity = (Camera.main.ScreenToWorldPoint(new Vector3(Screen.width * 0.8f, Screen.height * 1.2f, 10)) - transform.position).normalized * bullet.GetComponent<Attack_Parameter>().speed;//画面の真ん中
        //bullet.GetComponent<Rigidbody>().velocity = (Camera.main.transform.TransformDirection(Vector3.forward)) * bullet.GetComponent<Attack_Parameter>().speed;//画面の真ん中
        bullet.GetComponent <Rigidbody>().velocity = (HandR.transform.TransformDirection(Vector3.forward)) * bullet.GetComponent <Attack_Parameter>().speed;//コントローラの向いてる方向

        //効果音と演出
        if (!SE.isPlaying)
        {
            SE.PlayOneShot(SE.clip);//SE
        }

        Destroy(bullet, bullet.GetComponent <Attack_Parameter>().GetA_Time());

        //yield return new WaitForSeconds(bullet.GetComponent<Attack_Parameter>().GetR_Time());//撃った後の硬直
        yield return(new WaitForSeconds(0));//コルーチンだよー
    }
Esempio n. 3
0
    IEnumerator Shot()
    {
        Parent.GetComponent <Character_Parameters>().SetKeylock();
        GameObject bullet;

        animator.SetTrigger("Shoot");

        bullet = GameObject.Instantiate(bullet_Prefab);                //弾生成
        //MC.AddExistBullet(bullet);//現在の弾数を増やす
        bullet.GetComponent <Attack_Parameter>().Parent = this.Parent; //もらった親を渡しておく必要がある

        //MPの処理
        pcVR.SetMP(pcVR.GetMP() - GetSMP());

        //弾を飛ばす処理
        bullet.transform.position = transform.position;                                                                                                                   //Muzzleの位置
        bullet.transform.rotation = Quaternion.LookRotation(Parent.transform.TransformDirection(Vector3.forward).normalized);                                             //回転させて弾頭を進行方向に向ける
        //カメラとキャラの向きが90°以上ずれてたら
        if (Vector3.Dot(pcVR.direction.normalized, Parent.transform.TransformDirection(Vector3.forward).normalized) < 0)                                                  //二つのベクトル間の角度が90°以上(たぶん)
        {
            bullet.GetComponent <Rigidbody>().velocity = Parent.transform.TransformDirection(Vector3.forward).normalized *bullet.GetComponent <Attack_Parameter>().speed; //キャラの向いてる方向
        }
        else
        {
            bullet.GetComponent <Rigidbody>().velocity = (Camera.main.ScreenToWorldPoint(new Vector3(Screen.width / 2, Screen.height / 2, 50)) - transform.position).normalized * bullet.GetComponent <Attack_Parameter>().speed;//画面の真ん中
        }
        //注目中だったら
        if (pcVR.GetF_Watch())
        {
            //ちょっと上を狙わないと地面に向かってく
            bullet.GetComponent <Rigidbody>().velocity = (Camera.main.GetComponent <Z_Camera>().Target.transform.position + new Vector3(0, Camera.main.GetComponent <Z_Camera>().Target.transform.localScale.y, 0) - transform.position).normalized * bullet.GetComponent <Attack_Parameter>().speed;//敵の方向
        }

        //効果音と演出
        if (!SE.isPlaying)
        {
            SE.PlayOneShot(SE.clip);//SE
        }

        Destroy(bullet, bullet.GetComponent <Attack_Parameter>().GetA_Time());

        yield return(new WaitForSeconds(bullet.GetComponent <Attack_Parameter>().GetR_Time()));//撃った後の硬直

        //硬直を解除
        Parent.GetComponent <Character_Parameters>().SetActive();
    }
Esempio n. 4
0
    IEnumerator Shot()
    {
        //MPの処理
        pcVR.SetMP(pcVR.GetMP() - GetSMP());

        GameObject[] bullet = new GameObject[GetExNum()];

        //効果音と演出
        if (!SE.isPlaying)
        {
            SE.PlayOneShot(SE.clip);//SE
        }
        for (int i = 0; i < GetExNum(); i++)
        {
            bullet[i] = GameObject.Instantiate(bullet_Prefab);//弾生成

            if (bullet[i] != null)
            {
                bullet[i].GetComponent <Attack_Parameter>().Parent = this.Parent;//もらった親を渡しておく必要がある

                //bullet[i].transform.position = transform.position + Parent.transform.TransformDirection(new Vector3(Random.Range(-5, 5), 0, Random.Range(-5, 5)));//ランダム
                bullet[i].transform.position = new Vector3(
                    transform.position.x + (HandR.transform.TransformDirection(Vector3.forward) * 15).x + Parent.transform.TransformDirection(new Vector3(Random.Range(-3, 3), 0, Random.Range(-3, 3))).x,
                    transform.position.y,
                    transform.position.z + (HandR.transform.TransformDirection(Vector3.forward) * 15).z + Parent.transform.TransformDirection(new Vector3(Random.Range(-3, 3), 0, Random.Range(-3, 3))).z
                    );                                                                                                     //
                bullet[i].transform.rotation = Quaternion.LookRotation(Parent.transform.TransformDirection(Vector3.down)); //回転させて弾頭を進行方向に向ける

                Destroy(bullet[i], bullet_Prefab.GetComponent <Attack_Parameter>().GetA_Time());
            }

            //yield return new WaitForSeconds(0.1f);//弾の生成間隔
        }

        for (int i = 0; i < GetExNum(); i++)
        {
            if (bullet[i] != null)
            {
                bullet[i].GetComponent <Rigidbody>().velocity = ((Parent.transform.TransformDirection(Vector3.down)) * bullet_Prefab.GetComponent <Attack_Parameter>().speed);
                yield return(new WaitForSeconds(0.08f));//落とすまでの間
            }
        }
    }
Esempio n. 5
0
    IEnumerator Shot()
    {
        GameObject[] bullet        = new GameObject[3];
        Vector3      direction     = Parent.transform.TransformDirection(Vector3.forward);//この時点でのプレイヤの向きを基準にする
        Vector3      HandDirection = HandR.transform.TransformDirection(Vector3.forward) * 5;
        Vector3      OldTransform  = transform.position;

        //animator.SetTrigger("Shoot");

        //yield return new WaitForSeconds(1.0f);

        //MPの処理
        pcVR.SetMP(pcVR.GetMP() - GetSMP());


        //
        for (int i = 0; i < 1; i++)
        {
            bullet[i] = GameObject.Instantiate(bullet_Prefab);                                                            //弾生成
            bullet[i].transform.rotation = Quaternion.LookRotation(Parent.transform.TransformDirection(Vector3.forward)); //回転させて弾頭を進行方向に向ける
            bullet[i].GetComponent <Attack_Parameter>().Parent = this.Parent;                                             //もらった親を渡しておく必要がある
            bullet[i].transform.position = new Vector3(
                //OldTransform.x + HandDirection.x * ((i + 2) * 2) - 2,
                TargetArea.transform.position.x,
                transform.position.y,
                //OldTransform.z + HandDirection.z * ((i + 2) * 2) - 2
                TargetArea.transform.position.z
                );    //

            Destroy(bullet[i], bullet_Prefab.GetComponent <Attack_Parameter>().GetA_Time());

            //効果音と演出
            if (!SE.isPlaying)
            {
                SE.PlayOneShot(SE.clip);//SE
            }

            yield return(new WaitForSeconds(1.5f));
        }
    }