- Home /
my character is clipping through walls, nothing helps
i have it's movement script in fixed update, i have his rigidbody's collision detection set to Continuous, and interpolate to be interpolate
yet it clip's through walls i've played with project settings Time, that didn't help
i've figured out that the problem is probably in character's speed, i gave it a default speed of 40 and it clipped
still no idea on how to fix it
void FixedUpdate()
{
Move();
Dash();
}
void Move()
{
float tHmove = Input.GetAxisRaw("Horizontal");
float tVmove = Input.GetAxisRaw("Vertical");
Vector3 wDir = new Vector3(tHmove, 0f, tVmove).normalized;
wDir = Quaternion.Euler( 0, car.eulerAngles.y, 0) * wDir;
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(wDir) , 0.2F);
transform.Translate (wDir * sSpeed * Time.deltaTime, Space.World);
}
void Dash()
{
bool dashing = Input.GetKeyDown(KeyCode.LeftShift);
if (dashing)
{
StartCoroutine(IeDash());
//dashTime = 0;
}
if (!dashing)
{
sSpeed = speed;
}
/*
if (dashing && dashTime >= alowedDashTime)
{
Debug.Log("ass");
alowedDashTime += Time.deltaTime;
yield return null;
} */
}
///////
IEnumerator IeDash()
{
dashTime = 0;
while (dashTime < alowedDashTime)
{
Debug.Log("ass");
sSpeed = dashSpeed;
dashTime += Time.deltaTime;
yield return null;
}
}
}
![alt text][1]
[1]: /storage/temp/195074-screenshot-2022-04-16-19-15-39.png
Answer by niko_trap · Apr 16 at 03:18 PM
Never mind guys, fixed it myself ,
found out that the problem was in me using "transform.Translate" i changed it to AddForce
there is a script b4
Vector3 wDir = new Vector3(tHmove, 0f, tVmove).normalized;
wDir = Quaternion.Euler( 0, car.eulerAngles.y, 0) * wDir;
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(wDir) , 0.2F);
transform.Translate (wDir * sSpeed * Time.deltaTime, Space.World);
and after
Vector3 wDir = new Vector3(tHmove, 0f, tVmove).normalized;
wDir = Quaternion.Euler( 0, car.eulerAngles.y, 0) * wDir;
rb.AddForce(wDir.normalized * sSpeed, ForceMode.Impulse);
if (wDir != Vector3.zero)
{
transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(wDir) , 0.2F);
}
i also had to change the way i handle character's .y rotation in the rigidBody inspector had to check freeze y rotation
hope it'll be useful to somebody
Your answer
Follow this Question
Related Questions
Character is not Colliding despite having a Box Collider and Rigidbody 0 Answers
Clipping Boxes 1 Answer
Animator overriding collisions? 0 Answers
Colliding fast moving object with a slow moving object 1 Answer
Fixed Joint - Collision Problem 1 Answer