You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am making a simple ball game that moves left and right when it hits a wall. I want the game to be like an arcade type game where the ball is on a platform and it keeps jumping up. So I've written a code to spawn a list of prefabs randomly upwards with a fixed gap. Since this is an endless runner I want the bottom Prefabs to be destroyed and new one to be spawned on top of the previous one. But when a new prefab is being spawned sometimes the gap made on the y axis is off but a decimal point and the more you play the bigger the gap is until the ball can't make the jump to the next platform. Any Solutions??
`using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
public class PlatformSpawner : MonoBehaviour
{
public GameObject[] prefabs;
private GameObject platform;
public float gap = 3f;
public int maxInstances = 20;
private int numInstances = 0;
public ArcadeMovement scoreCountScript;
private float spawnerPosition = 0f;
private float lastSpawnedPosition = 0f;
private GameObject newPrefab;
private void Start()
{
spawnerPosition = transform.position.y;
}
void Update()
{
float scoreCounter = scoreCountScript.scoreCount;
Vector3 currentPosition = transform.position;
Transform currentRotation = gameObject.transform;
currentPosition.x = 0f;
currentRotation.eulerAngles = new Vector3(currentRotation.eulerAngles.x, currentRotation.eulerAngles.y, 0f);
transform.position = currentPosition;
if (numInstances < maxInstances)
{
int index = 0;
if (scoreCounter < 25)
{
index = Random.Range(0, 3);
}
else if (scoreCounter >= 25 && scoreCounter < 50)
{
index = Random.Range(0, 5);
}
else if (scoreCounter >= 50)
{
index = Random.Range(0, 7);
}
currentPosition = transform.position + new Vector3(0f, Mathf.RoundToInt(numInstances * gap), 0f);
newPrefab = Instantiate(prefabs[index], currentPosition, Quaternion.identity);
currentPosition += newPrefab.transform.position;
numInstances++;
}
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.name.StartsWith("Platform"))
{
Destroy(collision.gameObject);
Debug.Log("Platform Destroyed");
numInstances--;
}
}
}`
The text was updated successfully, but these errors were encountered:
I am making a simple ball game that moves left and right when it hits a wall. I want the game to be like an arcade type game where the ball is on a platform and it keeps jumping up. So I've written a code to spawn a list of prefabs randomly upwards with a fixed gap. Since this is an endless runner I want the bottom Prefabs to be destroyed and new one to be spawned on top of the previous one. But when a new prefab is being spawned sometimes the gap made on the y axis is off but a decimal point and the more you play the bigger the gap is until the ball can't make the jump to the next platform. Any Solutions??
`using System.Collections;
using System.Collections.Generic;
using Unity.VisualScripting;
using UnityEngine;
public class PlatformSpawner : MonoBehaviour
{
public GameObject[] prefabs;
private GameObject platform;
public float gap = 3f;
public int maxInstances = 20;
}`
The text was updated successfully, but these errors were encountered: