public void FireProjectile(GameObject projectilePrefab, float direction) { Vector3 initialPosition = Vector3.zero; Vector2 directionToFire = SpecMath.GetXYComponents(direction % 360); // Move the initial position to a barrel's length away initialPosition.x = directionToFire.x * this.transform.localScale.y; initialPosition.y = directionToFire.y * this.transform.localScale.y; // Always instantiate slightly behind the barrel initialPosition.z = this.transform.position.z + 0.1f; GameObject newProjectile = Instantiate(projectilePrefab, initialPosition, Quaternion.identity); newProjectile.GetComponent <BasicProjectileBehaviour>().StartFire(directionToFire); }
private GameObject SpawnAnEnemy(ScreenSection sectionToSpawn, GameObject enemyToSpawn) { // Get position based on 'sectionToSpawn' Vector2 screenPos = SpecMath.GetScreenEdgePosition(sectionToSpawn, UnityEngine.Random.Range(-1f, 1f)); Vector3 worldPos = new Vector3(screenPos.x, 0.02f, screenPos.y); worldPos = Camera.main.ScreenToWorldPoint(worldPos); //worldPos.z = spawnPositionZ; // Move the position slightly offscreen worldPos += (worldPos - player.position) * 0.1f; // Spawn enemy GameObject newEnemy = Instantiate(enemyToSpawn, worldPos, Quaternion.identity); return(newEnemy); }