void SpreadShot(int shots) { Vector3 mousePos = cam.ScreenToWorldPoint(Input.mousePosition); Vector3 direction; direction = mousePos - firePoint.position; direction = direction.normalized; float directionAngle = AngleOffAroundAxis(Vector3.up, direction, Vector3.forward); Vector3 originalDirection = DirFromAngle(directionAngle); float adjustedArc = setArc * ((float)shots / (1.0f + arcScaling)); Vector3 leftArc = DirFromAngle(directionAngle + adjustedArc); Vector3 rightArc = DirFromAngle(directionAngle - adjustedArc); for (int i = 0; i < shots; i++) { GameObject go = Instantiate(bulletPrefab); go.transform.localScale *= bulletScaling; BossBulletBehavior b = go.GetComponent <BossBulletBehavior>(); b.SetBullet(bulletType); b.bulletDamage = (int)damageMultiplier; b.isPlayer = true; b.playerBulletSpeed = playerBulletSpeed; go.transform.position = new Vector2(firePoint.position.x, firePoint.position.y); Vector3 lerpDirection = Vector3.Slerp(leftArc, rightArc, (float)i / (float)(shots - 1)); b.Move(lerpDirection, AngleOffAroundAxis(Vector3.up, lerpDirection, Vector3.back)); //b.Move(originalDirection); } cooldownTime = COOLDOWN_TIME; }
void Shoot() { if (cooldownTime <= 0) { if (laserGunSet) { } else { int totalShots = move.GetShootCount(); //int totalShots = 3; if (isPlayer && totalShots > 1) { SpreadShot(totalShots); return; } GameObject go = Instantiate(bulletPrefab); go.transform.localScale *= bulletScaling; Vector3 direction; BossBulletBehavior b = go.GetComponent <BossBulletBehavior>(); if (!isPlayer) { direction = target.transform.position - firePoint.position; } else { b.SetBullet(bulletType); b.bulletDamage = (int)damageMultiplier; Vector3 mousePos = cam.ScreenToWorldPoint(Input.mousePosition); direction = mousePos - firePoint.position; b.isPlayer = true; b.playerBulletSpeed = playerBulletSpeed; } go.transform.position = new Vector2(firePoint.position.x, firePoint.position.y); direction = direction.normalized; b.Move(direction, AngleOffAroundAxis(Vector3.up, direction, Vector3.back)); } cooldownTime = COOLDOWN_TIME; } }