Initial commit
This commit is contained in:
70
Assets/Scripts/GridMoverTools.cs
Normal file
70
Assets/Scripts/GridMoverTools.cs
Normal file
@@ -0,0 +1,70 @@
|
||||
namespace Marro.PacManUdon
|
||||
{
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
public static class GridMoverTools
|
||||
{
|
||||
public static Vector2 GetNextPosition(Vector2 currentPosition, Vector2 direction, float speed)
|
||||
{
|
||||
return currentPosition + direction * speed * Time.deltaTime;
|
||||
}
|
||||
|
||||
public static void SetPosition(Vector2 position, Transform transform)
|
||||
{
|
||||
transform.localPosition = new Vector3(position.x, position.y, transform.localPosition.z);
|
||||
}
|
||||
|
||||
|
||||
public static Vector2 PositionToGrid(Vector2 position)
|
||||
{
|
||||
return new Vector2((float)Math.Round(position.x), (float)Math.Round(position.y));
|
||||
}
|
||||
|
||||
public static bool CrossesTileCenter(Vector2 currentPosition, Vector2 nextPosition, bool horizontal, bool vertical)
|
||||
{
|
||||
bool result = false;
|
||||
|
||||
if (horizontal)
|
||||
{
|
||||
result = result || Math.Floor(currentPosition.x) != Math.Floor(nextPosition.x);
|
||||
}
|
||||
if (vertical)
|
||||
{
|
||||
result = result || Math.Floor(currentPosition.y) != Math.Floor(nextPosition.y);
|
||||
}
|
||||
|
||||
// Debug.Log($"CrossesTileCenter at currentPosition {currentPosition} with nextPosition {nextPosition}, horizontal {horizontal} and vertical {vertical} gives {result}");
|
||||
return result;
|
||||
}
|
||||
|
||||
public static bool CrossesTileBorder(Vector2 currentPosition, Vector2 nextPosition, bool horizontal, bool vertical)
|
||||
{
|
||||
bool result = false;
|
||||
|
||||
if (horizontal)
|
||||
{
|
||||
result = result || nextPosition.x != currentPosition.x
|
||||
&& ((Math.Floor(currentPosition.x) != Math.Floor(nextPosition.x) && nextPosition.x % 1 != 0)
|
||||
|| currentPosition.x % 1 == 0);
|
||||
}
|
||||
if (vertical)
|
||||
{
|
||||
result = result || nextPosition.y != currentPosition.y
|
||||
&& ((Math.Floor(currentPosition.y) != Math.Floor(nextPosition.y) && nextPosition.y % 1 != 0)
|
||||
|| currentPosition.y % 1 == 0);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static bool CheckCollisionInDirection(Transform transform, Vector2 position, Vector2 direction)
|
||||
{
|
||||
// Debug.Log("Collision check");
|
||||
bool result = Physics.Linecast(transform.parent.TransformPoint(position), transform.parent.TransformPoint(position + direction.normalized), 1 << 22, QueryTriggerInteraction.Ignore);
|
||||
// Debug.DrawLine(transform.parent.TransformPoint(position), transform.parent.TransformPoint(position + direction.normalized), Color.red, 1);
|
||||
// Debug.Log($"{gameObject} Collision; Position {position} became {transform.parent.TransformPoint(position)}, direction {direction.normalized} became {transform.parent.TransformDirection(direction.normalized)}");
|
||||
// Debug.Log("collision check for " + position + " in direction " + direction + " returned " + result);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user