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); } } } } } }
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); } }
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; } } } } }
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); } } }
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); } }