60 lines
1.6 KiB
C#
60 lines
1.6 KiB
C#
using UnityEngine;
|
|
|
|
public class PushBlock_CollisionPrediction : MonoBehaviour
|
|
{
|
|
public bool Colliding;
|
|
|
|
public bool printresult;
|
|
|
|
private void OnTriggerEnter2D(Collider2D other)
|
|
{
|
|
if (!Colliding && other.tag != "Player" && other.tag != "PuzzlePushBlock")
|
|
{
|
|
Colliding = true;
|
|
if (printresult)
|
|
{
|
|
MonoBehaviour.print(other.name);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void OnTriggerStay2D(Collider2D other)
|
|
{
|
|
if (!Colliding && other.tag != "Player" && other.tag != "PuzzlePushBlock")
|
|
{
|
|
Colliding = true;
|
|
}
|
|
if (printresult)
|
|
{
|
|
MonoBehaviour.print(other.name);
|
|
}
|
|
}
|
|
|
|
private void OnTriggerExit2D(Collider2D other)
|
|
{
|
|
if (Colliding && other.tag != "Player" && other.tag != "PuzzlePushBlock")
|
|
{
|
|
Colliding = false;
|
|
}
|
|
if (printresult)
|
|
{
|
|
MonoBehaviour.print(other.name);
|
|
}
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
Vector2 vector = new Vector2(PlayerManager.Instance.transform.position.x, PlayerManager.Instance.transform.position.y);
|
|
Vector2 vector2 = new Vector2(base.transform.parent.position.x, base.transform.parent.position.y);
|
|
Vector2 vector3 = vector2 - vector;
|
|
if (Mathf.Abs(vector3.x) > Mathf.Abs(vector3.y))
|
|
{
|
|
base.transform.position = vector2 + new Vector2(Mathf.Sign(vector3.x), 0f);
|
|
}
|
|
else
|
|
{
|
|
base.transform.position = vector2 + new Vector2(0f, Mathf.Sign(vector3.y));
|
|
}
|
|
}
|
|
}
|