public static AsteroidInstance Create(int impactRadius, float speed, Vector3 targetPosition, GameObject prefab, GameObject impactPrefab) { float angle = Random.Range(40, -40) * Mathf.Deg2Rad; int distance = Mathf.FloorToInt(Camera.main.orthographicSize * 3); targetPosition.z = -1; Vector3 spawnPosition = targetPosition + new Vector3(Mathf.Sin(angle) * distance, Mathf.Cos(angle) * distance, -1); GameObject instance = Instantiate(prefab, spawnPosition, Quaternion.identity); AsteroidInstance asteroidInstance = instance.AddComponent <AsteroidInstance>(); asteroidInstance.impactRadius = impactRadius; asteroidInstance.speed = speed; asteroidInstance.targetPosition = targetPosition; asteroidInstance.impactPrefab = impactPrefab; return(asteroidInstance); }
public void Spawn(int impactRadius, float speed, Tile targetTile) { GameObject asteroidPrefab = GetAsteroidPrefab(); AsteroidInstance.Create(impactRadius, speed, targetTile.WorldPosition.ToVector2(), asteroidPrefab, GetImpactPrefab(asteroidPrefab)); }