I am trying to make AtmRushClone and I stuck on object stacking.I pick up the moneys than destroy moneys when objects hit the obstacles. But object index returns -1 before list is empty. I am getting “Index was out of range must be non negative unity” error.
using System;
using UnityEngine;
using Random = UnityEngine.Random;
public class JewelSeparationController : MonoBehaviour
{
[SerializeField] private PlayerMovement playerMovement;
private void Start()
{
playerMovement = GetComponent<PlayerMovement>();
playerMovement = FindObjectOfType<PlayerMovement>();
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Atm"))
{
}
else if (other.gameObject.CompareTag("Obstacle"))
{
JewelSeparation(JewelCollectorController._jewels.IndexOf(gameObject));
}
}
private void JewelSeparation(int jewelIndex)
{
if (jewelIndex == JewelCollectorController._jewels.Count - 1)
{
JewelCollectorController._jewels.Remove(JewelCollectorController._jewels[jewelIndex]);
Destroy(gameObject);
}
else if (jewelIndex < 0)
{
playerMovement.speedZ = 0f;
}
else
{
for (int i = JewelCollectorController._jewels.Count - 1; i > jewelIndex; i--)
{
JewelCollectorController._jewels*.gameObject.tag = "CollectableMoney";*
JewelCollectorController._jewels*.transform.position = new Vector3(
JewelCollectorController._jewels.transform.position.x + Random.Range(3f, 6f),
JewelCollectorController._jewels.transform.position.y,
JewelCollectorController._jewels.transform.position.z + Random.Range(5f, 9f));*
Destroy(JewelCollectorController.jewels*.GetComponent());
Destroy(JewelCollectorController._jewels.GetComponent());
JewelCollectorController._jewels.GetComponent().isTrigger = true;
JewelCollectorController._jewels.Remove(JewelCollectorController._jewels);*
}
JewelCollectorController._jewels.Remove(JewelCollectorController._jewels[jewelIndex]);
Destroy(gameObject);
}
}
}_