OnTriggerEnter not working when objects speed is from a global variable?
So I have a simple sphere set as player. Rigidbody, kinematic. I've got cubes spawning that move toward the player at x speed. The cubes are Rigidbody's, Kinematic, set to "Is Trigger" and tagged as "Tree"
My code was working fine before I put the Tree speed into a global variable.
This is in my player controller ( which worked just fine before):
void OnTriggerEnter(Collider other)
{
Debug.Log("COLLIDE!");
if (other.gameObject.CompareTag ("Tree"))
{
Debug.Log("HIT TREE!");
other.gameObject.SetActive (false);
count = count + 1;
SetCountText ();
}
}
And this is in my Tree movement script:
private float speed;
void Start () {
speed = GlobalControl.TreeSpeed;
}
void FixedUpdate() {
transform.Translate(0, 0, speed * Time.deltaTime);
}
It works fine when I set the speed in that script, but when I set the speed to my global variable "TreeSpeed" the OnTriggerEnter no longer works? Any ideas on what I'm doing wrong?
Here is the line in my global script:
public static float TreeSpeed = 90;
As opposed to setting the speed to 90 in my tree movement script.
Thanks so much!
EDIT: Actually.. weird.. I changed the script back to not use the global variable and it's no longer working. I swear it was working before.. now I'm really confused. Everything was working fine before I put everything in a global variable script!
UPDATE! Ok this is even weirder. When I change the speed from 90 to 100 it works again. Any ideas why this could be? It doesn't seem to work with any 2 digit number as the speed... weird! That's why I thought it was working before the global variable, because it was set at 100 before I changed it to 90.
Answer by hexagonius · Feb 22, 2016 at 06:45 PM
change the velocity in Fixed Update or use AddForce instead of translating the object.
Your answer
![](https://koobas.hobune.stream/wayback/20220612065214im_/https://answers.unity.com/themes/thub/images/avi.jpg)