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(); //ダメージを受けるようにする }
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));//コルーチンだよー }
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(); }
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));//落とすまでの間 } } }
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)); } }