// Use this for initialization public void Init(Vector3 arrowObjPos, Vector3 arrowObjRot, float attackRange, Transform parentOrigin, ProjectileTrajectory trajectory = ProjectileTrajectory.Line) { _arrowObjPos = arrowObjPos; _arrowObjRot = arrowObjRot; _attackRange = attackRange; _parentOrigin = parentOrigin; _projectileTrajectory = trajectory; _meshRenderer = gameObject.GetComponent <MeshRenderer>(); Available = true; PrepareArrow(true); }
public void SetRandomTrajectoryAndMultishoot() { int variation; switch (weapon_shootSecuence) { case ShootSecuence.barrage_1way: { variation = Random.Range(1, 4); if (variation == 1) { weapon_projectile_trajectory = ProjectileTrajectory.normal; } else if (variation == 2) { weapon_projectile_trajectory = ProjectileTrajectory.tracking; } else { weapon_projectile_trajectory = ProjectileTrajectory.binarytrack; } weapon_multishoot = Random.Range(4, 8); break; } case ShootSecuence.barrage_2way: { variation = Random.Range(1, 4); if (variation == 1) { weapon_projectile_trajectory = ProjectileTrajectory.normal; } else if (variation == 2) { weapon_projectile_trajectory = ProjectileTrajectory.tracking; } else { weapon_projectile_trajectory = ProjectileTrajectory.binarytrack; } weapon_multishoot = Random.Range(4, 8); break; } case ShootSecuence.barrage_crossful: { variation = Random.Range(1, 4); if (variation == 1) { weapon_projectile_trajectory = ProjectileTrajectory.normal; } else if (variation == 2) { weapon_projectile_trajectory = ProjectileTrajectory.tracking; } else { weapon_projectile_trajectory = ProjectileTrajectory.binarytrack; } weapon_multishoot = Random.Range(5, 9); break; } case ShootSecuence.barrage_crosshalf: { variation = Random.Range(1, 4); if (variation == 1) { weapon_projectile_trajectory = ProjectileTrajectory.normal; } else if (variation == 2) { weapon_projectile_trajectory = ProjectileTrajectory.tracking; } else { weapon_projectile_trajectory = ProjectileTrajectory.binarytrack; } weapon_multishoot = Random.Range(5, 9); break; } case ShootSecuence.barrage_standard: { variation = Random.Range(1, 4); if (variation == 1) { weapon_projectile_trajectory = ProjectileTrajectory.normal; } else if (variation == 2) { weapon_projectile_trajectory = ProjectileTrajectory.tracking; } else { weapon_projectile_trajectory = ProjectileTrajectory.binarytrack; } weapon_multishoot = Random.Range(1, 3) == 1 ? 1 : 2; break; } default: { variation = Random.Range(1, 9); if (variation <= 5) { weapon_projectile_trajectory = ProjectileTrajectory.normal; } else if (variation == 6) { weapon_projectile_trajectory = ProjectileTrajectory.helix; } else if (variation == 7) { weapon_projectile_trajectory = ProjectileTrajectory.tracking; } else { weapon_projectile_trajectory = ProjectileTrajectory.binarytrack; } if (Random.Range(1, 6) < 3) { weapon_multishoot = 1; } else { weapon_multishoot = Random.Range(3, 6); } break; } } switch (weapon_projectile_trajectory) { case ProjectileTrajectory.binarytrack: { weapon_multishootAperture = Random.Range(1f, 2.5f) * 10 * weapon_multishoot; break; } case ProjectileTrajectory.helix: { weapon_multishootAperture = Random.Range(1f, 1.5f) * 15f * weapon_multishoot; break; } case ProjectileTrajectory.tracking: { weapon_multishootAperture = Random.Range(1f, 2.5f) * 8f * weapon_multishoot; break; } default: { weapon_multishootAperture = Random.Range(1f, 2.5f) * 3.5f * weapon_multishoot; break; } } }