Hey.
Im a newb coder & Ive just started using unity and I’m trying to create a scene for an intro to a game.
So My scene is a ship flying through the atmosphere as a 2d platformer.
So far I’ve been able to create a parallax effect on my scene, and to make it loop on its own, I made the ship translate along the X axis and then made the camera a child of the ship which causes the camera to stay positioned on the ship. (& I’m also using the cinemachine package).
I used particle effect to generate some air specks and it scrolls along with the camera just fine. but when created a spawn object & coded it to generate random space rocks and disappear off camera(using this screenBounds tutorial by press start on ytube), for some reason the space rocks tend to generate in the same placement no matter how I change the position. I would like a code that allows them to continuously generate in front of the camera, while its moving, and then disappear a little bit off the camera.
is this possible? (adding my code below.)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DeployAsteroid : MonoBehaviour
{
public GameObject asteroidPrefab;
public float respawnTime = 1.0f;
private Vector2 screenBounds;
public Transform cameraTransform;
//Set it to whatever value you think is best
public float distanceFromCamera;
// Start is called before the first frame update
void Start()
{
screenBounds = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height, Camera.main.transform.position.z));
StartCoroutine(asteroidWave());
}
private void spawnEnemy(){
GameObject a = Instantiate(asteroidPrefab) as GameObject;
a.transform.position = new Vector2(screenBounds.x, Random.Range(-screenBounds.y, screenBounds.y));
//asteroidPrefab = transform.position.x();
}
IEnumerator asteroidWave(){
while(true){
yield return new WaitForSeconds(respawnTime);
spawnEnemy();
}
void Update(){
Vector3 resultingPosition = cameraTransform.position + cameraTransform.forward * distanceFromCamera;
transform.position = resultingPosition;
}
}
// Update is called once per frame
}