- Home /
Changing Boolean on collision
I'm currently working on a game where there are many cars colliding through each other. This doesn't happen in real life, so naturally, I want to fix this.
My following code below is attached to the cars, and has a Boolean in it that whenever it collides with something with the tag Cars(other cars), the boolean will change to false, causing the car to stop. This then calls another function to start up, which after 5 seconds, sets the boolean back to true.
using UnityEngine;
using System.Collections;
public class CarmovingZ : MonoBehaviour {
public int maxZPosition = 321;
private Vector3 initialPos;
private Quaternion initialRotation;
public float gogo = 0f;
public float speedup = 0.05f;
public bool stahp = true;
bool keepPlaying=true;
// Use this for initialization
void Start () {
initialPos = transform.position;
initialRotation = transform.rotation;
}
void OnTriggerEnter (Collider other)
{
if(other.gameObject.tag == "Cars")
{
Debug.Log("BEEP");
stahp = false;
StartCoroutine(SoundOut());
}
}
// Update is called once per frame
void Update () {
if(stahp)
{
transform.Translate(Vector3.up * (Time.deltaTime + gogo));
if( gameObject.transform.position.z >= maxZPosition)
{
gogo = (gogo + speedup);
if( gogo > 3)
{
gogo = 3;
}
transform.rotation = initialRotation;
transform.position = initialPos;
}
}
}
IEnumerator SoundOut()
{
while (keepPlaying){
yield return new WaitForSeconds(5);
stahp = true;
}
}
}
However, the cars keep colliding with each other, and don't stop with this code on them. They both have colliders on them, so I don't see the problem. Any help would be appreciated.
Your answer
Follow this Question
Related Questions
Problem with OnTriggerStay2D function 2 Answers
SpeedBoost not working,My speedBoostTaken variable isn't working, why? 1 Answer
Multiple Cars not working 1 Answer
How can I tell the player is in contact with the ground, within a script associated with the player? 1 Answer
Distribute terrain in zones 3 Answers