Question by
rohitsuratekar · Feb 20, 2017 at 07:33 PM ·
gameobjectinstantiatedestroy
Unable to delete instance of GameObject
I am hitting my head with this problem. I have tried a LOT of answers from this forum but none of it actually helped. I am trying build classical snake game in 3D. I am creating instances of my PreFab and trying to delete them as my snake moves. I am storing instances in List and then trying to delete last item added. However I am not able to do so. Here is my code
public class SnakeController : MonoBehaviour {
public float swpanTime = 0.5f;
public GameObject body;
public GameObject fruit;
private List<GameObject> allParts = new List<GameObject>();
private Vector3 direction;
void Start () {
direction = transform.forward;
Invoke("MoveSnake", swpanTime);
Instantiate(fruit, gameObject.transform.position, Quaternion.identity);
}
void MoveSnake()
{
Vector3 loc = transform.position;
transform.position += direction;
GameObject newPart = Instantiate(body, loc, Quaternion.identity);
allParts.Insert(0,newPart);
if (allParts.Count > 1)
{
Destroy(allParts[allParts.Count - 1]); //This line is not working!!
}
allParts.RemoveAt(allParts.Count - 1);
Invoke("MoveSnake", swpanTime);
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.Equals(GameObject.Find("Fruit")))
{
allParts.Add(allParts[allParts.Count - 1]);
Destroy(other.gameObject);
Vector3 position = new Vector3(Random.Range(10f, 10F), 0, Random.Range(10F, 10F));
Instantiate(fruit, position, Quaternion.identity);
}
}
// Update is called once per frame
void Update () {
if (Input.GetKey(KeyCode.LeftArrow))
{
direction = -transform.right;
} else if (Input.GetKey(KeyCode.RightArrow))
{
direction = transform.right;
} else if (Input.GetKey(KeyCode.UpArrow))
{
direction = transform.forward;
} else if (Input.GetKey(KeyCode.DownArrow))
{
direction = -transform.forward;
}
}
}
Comment
Your answer
Follow this Question
Related Questions
Canon Ball shooting with Instiate 1 Answer
instantiate gameobject after destroyed 0 Answers
How to destroy on exiting PlayMode/EditMode? 1 Answer
Instantiate() and Destroy() vs setActive() 1 Answer
How to destroy instatiate objects? 1 Answer