- Home /
Collision error
I have collision detectors on both of the objects and they are Is Trigger'd and they do not collide with this script:
var inputVector : Vector3 =
Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
transform.Translate(inputVector * Time.deltaTime * 10);
Assuming that it does not give it time to collide, how do i fix it? Also, I have all appropriate colliders for each object. It's a capsule character and boxes as objects. Also when i get ar the center sometimes i can get it to shoot me down violently until the gravity takes notice that i have jumped through the baseplate.
Answer by aldonaletto · Apr 29, 2012 at 12:21 PM
When you move things with Translate, collisions aren't detected - the object must be a CharacterController or a Rigidbody and be moved with the appropriate instructions for the collision system to work properly.
If the object you want to move is a CharacterController, you must use Move or SimpleMove to move it:
var inputVector : Vector3 = Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); GetComponent(CharacterController).SimpleMove(inputVector * 10);If the object is a rigidbody, you can simulate a SimpleMove like this:
var inputVector : Vector3 = Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); rigidbody.velocity = Vector3(inputVector*10, rigidbody.velocity.y, inputVector*10);This keeps the vertical velocity, what preserves the gravity action.
NOTE: Colliders with Is Trigger checked become triggers: you must use OnTriggerEnter/Stay/Exit events; if Is Trigger is unchecked, you must use OnCollisionEnter/Stay/Exit events.
i've been searching and that is not the best way. Use AddForce(); and Set$$anonymous$$axAngularForce(); The Set makes your force not go over a set amount of numbers. The AddForce Adds some force torwards that way. Thus, we can do it so it moves like that, (i mean combine it with your answer!) Thanks Aldo, check my posts in the future to help me plz :)