Question by
karakaiyuliia · Mar 21, 2018 at 07:16 AM ·
collisionrigidbodyspritecubeboxcollider
Object do not stop after collision
I am using RigidBody and BoxCollider on both player and cube. Collision is detected, but player goes through the cube, while it should stop. Below is my code and screenshot from Unity.
public class Player : MonoBehaviour
{
public float speed = 10;
public Animator anim;
private Rigidbody rb;
//for swipes
Vector2 firstPressPos;
Vector2 secondPressPos;
Vector2 currentSwipe;
// Use this for initialization
void Start ()
{
anim = GetComponent<Animator>();
rb = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update ()
{
detectSwipe();
}
public void detectSwipe()
{
float secondX;
float secondY;
const float movement = 0.5f;
if (Input.touches.Length > 0)
{
Touch t = Input.GetTouch(0);
if (t.phase == TouchPhase.Began)
{
//save began touch point
firstPressPos = new Vector2(t.position.x, t.position.y);
}
if (t.phase == TouchPhase.Ended)
{
//save ended touch point
secondPressPos = new Vector2(t.position.x, t.position.y);
currentSwipe = new Vector3(secondPressPos.x - firstPressPos.x, secondPressPos.y - firstPressPos.y);
//normilizing 2D vector
currentSwipe.Normalize();
//determine swipe and change position
if (currentSwipe.y > 0 && currentSwipe.x > -0.5f && currentSwipe.x < 0.5f)
{
secondY = transform.position.y + movement;
while (transform.position.y < secondY)
{
transform.position = new Vector2(transform.position.x, transform.position.y + movement);
}
anim.Play("player_up");
}
if(currentSwipe.y < 0 && currentSwipe.x > -0.5f && currentSwipe.x < 0.5f)
{
secondY = transform.position.y - movement;
while(transform.position.y > secondY)
{
transform.position = new Vector2(transform.position.x, transform.position.y - movement);
}
anim.Play("player_down");
}
if(currentSwipe.x < 0 && currentSwipe.y > -0.5f && currentSwipe.y < 0.5f)
{
secondX = transform.position.x - movement;
while(transform.position.x > secondX)
{
transform.position = new Vector2(transform.position.x - movement, transform.position.y);
}
anim.Play("player_walking_left");
}
if(currentSwipe.x > 0 && currentSwipe.y > -0.5f && currentSwipe.y < 0.5f)
{
secondX = transform.position.x+movement;
while(transform.position.x < secondX)
{
transform.position = new Vector2(transform.position.x + movement, transform.position.y);
}
anim.Play("player_walking");
}
}
}
}
private void OnCollisionEnter(Collision other)
{
Debug.Log("collision");
}
}
screen-shot-2018-03-20-at-93159-pm.png
(344.6 kB)
Comment
Your answer
Follow this Question
Related Questions
Collision Box Object issue,Collision issue with double movement. Need help figuring it out! 0 Answers
Why is my Character's BoxCollider getting stuck in between two wall BoxColliders? 0 Answers
Simplest Box Collider Question. 2 Answers
How can i make the cube roll 0 Answers
I added Rigidbody to my cube and now it goes super fast when i move! 0 Answers