예제 #1
0
        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);
        }
예제 #2
0
        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);
        }