Hi,
I have an object that falls using rigidbody.AddForce not the default gravity.
And when you press left/right you move the object in order to navigate around obstacles.
My problem is that the player object will often pass through the wall objects i have even used waitForSecconds to temporary disable the controls but the problem still persists.
static var power : float = 0.0;
static var myY : float;
public var upperClampLimit : float; // can be changed form editor
public var lowerClampLimit : float; // can be changed from editor
public var fallAcceleration : float; // can be changed from editor
public var wallSlow : float; //can be changed from editor
public var movementShrinkerhoriz : float; // can be changed form editor
public var movementShrinkervert : float; // can be changed form editor
var shouldMove : boolean = true;
function Start(){
rigidbody.freezeRotation = true;
}
function Update (){
Debug.Log (shouldMove);
var horiz : float = Input.GetAxis("Horizontal");
var horizMovement = horiz/movementShrinkerhoriz;
if (shouldMove) {
transform.Translate(Vector3(horizMovement,0,0));
}
if (horizMovement!=0){
rigidbody.velocity.x = 0;
}
var vert : float = Input.GetAxis("Vertical");
var vertMovement = vert/movementShrinkervert;
power = power - vertMovement;
power = power +fallAcceleration;
if (power <=0){
power = power +fallAcceleration;
}
rigidbody.AddForce(Vector3(0,-power,0));
var dist = (transform.position - Camera.main.transform.position).z;
var upBorder = Camera.main.ViewportToWorldPoint(Vector3(0,upperClampLimit,dist)).y;
var downBorder = Camera.main.ViewportToWorldPoint(Vector3(0,lowerClampLimit,dist)).y;
transform.position.y = Mathf.Clamp(transform.position.y,upBorder,downBorder);
}
function FixedUpdate (){
myY = (rigidbody.position.y);
rigidbody.transform.position.z = 0;
}
function OnCollisionEnter(theCollision : Collision){
if(theCollision.gameObject.name == "wall"){
shouldMove = false;
yield WaitForSeconds(0.5);
shouldMove = true;
if (power <=0){
power = power -wallSlow;
}
}
}