I was creating new stuff in my game until i found this “bug” :
-Link to the GIF (wait when i press the yellow block)-
My player moves slowly to a direction, i think it’s the rigidbody but the force decreases veryyyyy slowly…I’ve checked ALL my game’s scripts, but nothing.Any Help?!
MovementAnimationScript
#pragma strict
var speed : float = 5.0;
var realSpeed : float;
var grounded : boolean;
var isCrouch : boolean;
var canRun : boolean = true;
var canCrouch : boolean = true;
var canJump : boolean = true;
var raycastOrigin : Transform;
var layerMask : LayerMask;
var rigidVar : Rigidbody;
var jumpForce : float;
var direction : Vector3 = Vector3.zero;
private var hit : RaycastHit;
var dist : float = 1;
private var dir : Vector3;
function Update () {
direction = Vector3(Input.GetAxis("Left/Right") * realSpeed, rigidVar.velocity.y, Input.GetAxis("Backward/Forward") * realSpeed);
direction = transform.TransformDirection(direction);
dir = Vector3(0,-1,0);
Debug.DrawRay(raycastOrigin.position,dir*dist,Color.green);
if(Physics.SphereCast(raycastOrigin.position,0.3,dir,hit,dist,layerMask)){
grounded = true;
}else{
grounded = false;
}
if(Input.GetAxis("Run") > 0.1 && !isCrouch && canRun){
realSpeed = speed * 2;
}else if(isCrouch){
realSpeed = speed / 2;
}else{
realSpeed = speed;
}
if(!grounded){
isCrouch = false;
}
if(Input.GetButtonDown("Jump")){
if(grounded && canJump && !isCrouch){
rigidVar.AddForce(0,jumpForce * 100,0, ForceMode.Impulse);
}
}
if(Input.GetButtonDown("Crouch") && canCrouch && grounded){
isCrouch = !isCrouch;
}
}
function FixedUpdate(){
var realDirection : Vector3 = Vector3(direction.x * realSpeed, 0, direction.z * realSpeed);
rigidVar.MovePosition(transform.position + realDirection * Time.deltaTime);
}