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);
    }
Exemple #2
0
    public void Spawn(int impactRadius, float speed, Tile targetTile)
    {
        GameObject asteroidPrefab = GetAsteroidPrefab();

        AsteroidInstance.Create(impactRadius, speed, targetTile.WorldPosition.ToVector2(), asteroidPrefab, GetImpactPrefab(asteroidPrefab));
    }