Object starts to swerve/gets derailed after collision with a collider. Please help!
Hi!
I need help to figure out why my object starts to swerve/gets derailed after collision with collider. ie. my object travels straight line but after small collision to the right side it starts straifing right. I dont want this to happen. Any idea? My game is for Android if that matters.
Here is a GIF so you can see what i mean: https://gyazo.com/c46533a75436c7ce9f22afda753bbe5a
Player (object) movement script:
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityStandardAssets.CrossPlatformInput;
public class player : MonoBehaviour {
[SerializeField]
public static float moveSpeed = 1f;
[SerializeField]
float angularSpeed = 2f;
float rotationX;
Rigidbody2D rb;
// Use this for initialization
void Start () {
rb = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update () {
rotationX = CrossPlatformInputManager.GetAxis("Horizontal");
transform.Rotate(0, 0, rotationX * angularSpeed);
}
void FixedUpdate()
{
rb.velocity = transform.up * moveSpeed;
}
public void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.tag.Equals("rock"))
{
// how much the character should be knocked back
var magnitude = 500;
// calculate force vector
var force = transform.position - collision.transform.position;
// normalize force vector to get direction only and trim magnitude
force.Normalize();
gameObject.GetComponent<Rigidbody2D>().AddForce(force * magnitude);
}
}
}
Your answer
Follow this Question
Related Questions
Background Sprites lose their tags when the project is built 0 Answers
Rigid body goes flying on colliding 0 Answers
Unable to stop animation upon collision (2d, animation, rigidbody) 0 Answers
Player velocity.y changes when running horizontally over a composite collider 2D? 1 Answer
When is OnTriggerExit2D called? 1 Answer