Hi there,
So basically I have two game objects in a scene - one is just a rectangle shaped game object and the other is a wall. Both game object have BoxCollider2D components attached to them. The rectangle has a Dynamic Rigidbody2D attached to it.
Basically I have code that makes the rectangle travel horizontally to the right towards the wall. I have an if statement that states when the X value of the Bounds.Max position of the rectangle touches the X value of the Bounds.Min position of the wall a message should pop up in the console.
Here is the code that I have:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerNew : MonoBehaviour
{
private Rigidbody2D _rb;
private BoxCollider2D _col2D;
private float X_force = 25f;
public Vector2 newPosition;
public Vector2 bottomRight;
public Vector2 wallBoundsMin;
// Start is called before the first frame update
void Start()
{
_rb = GetComponent<Rigidbody2D>();
_col2D = GetComponent<BoxCollider2D>();
wallBoundsMin = GameObject.Find("Wall").GetComponent<BoxCollider2D>().bounds.min;
}
// Update is called once per frame
void Update()
{
bottomRight = new Vector2(_col2D.bounds.max.x,_col2D.bounds.min.x);
newPosition = new Vector2(X_force,0);
_rb.MovePosition(_rb.position + newPosition * Time.deltaTime);
if(bottomRight.x == wallBoundsMin.x){
Debug.Log("Bounds have collided with one another");
}
}
}
However nothing appears in the console when the rectangle crosses the wall. But the message actually does appear in the console if I change the if statement to the following:
if(bottomRight.x >= wallBoundsMin.x){
I’m confused as to why the message wont appear when I just check to see when the two X value’s equate to one another? I don’t think I’ve written the code incorrectly? Here is a video of the issue:
Any help would be appreciated. Thanks