metahunt/Assets/Scripts/PlayerControllerHelper.cs
2024-02-11 13:53:18 +05:30

87 lines
2.9 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public static class PlayerControllerHelper
{
public static Vector3 getWallRotation(Transform wall, Vector3 playerPos)
{
if (playerPos.x > wall.transform.position.x + (wall.transform.localScale.x / 2f))
{
//right
return wall.eulerAngles + new Vector3(0, 270, 0);
}
else if (playerPos.x < wall.transform.position.x - (wall.transform.localScale.x / 2f))
{
//left
return wall.eulerAngles + new Vector3(0, 90, 0);
}
else if (playerPos.z < wall.transform.position.z - (wall.transform.localScale.z / 2f))
{
//bottom
return wall.eulerAngles + Vector3.zero;
}
else if (playerPos.z > wall.transform.position.z + (wall.transform.localScale.z / 2f))
{
//top
return wall.eulerAngles + new Vector3(0, 180, 0);
}
else
{
Debug.Log("No results found");
Debug.Log(playerPos);
Debug.Log(wall.position);
Debug.Log(wall.localScale);
return Vector3.zero;
}
}
public static Vector3 playerPositionNearWall(Transform wall, Vector3 playerPos, float offset)
{
if (playerPos.x > wall.transform.position.x + (wall.transform.localScale.x / 2f))
{
//right
return new Vector3(wall.transform.position.x + (wall.transform.localScale.x / 2f) + offset, playerPos.y, playerPos.z);
}
else if (playerPos.x < wall.transform.position.x - (wall.transform.localScale.x / 2f))
{
//left
return new Vector3(wall.transform.position.x - (wall.transform.localScale.x / 2f) - offset, playerPos.y, playerPos.z);
}
else if (playerPos.z < wall.transform.position.z - (wall.transform.localScale.z / 2f))
{
//bottom
return new Vector3(playerPos.x, playerPos.y, wall.transform.position.z - (wall.transform.localScale.z / 2f) - offset);
}
else if (playerPos.z > wall.transform.position.z + (wall.transform.localScale.z / 2f))
{
//top
return new Vector3(playerPos.x, playerPos.y, wall.transform.position.z + (wall.transform.localScale.z / 2f) + offset);
}
else
{
Debug.Log("No results found");
Debug.Log(playerPos);
Debug.Log(wall.position);
Debug.Log(wall.localScale);
return Vector3.zero;
}
}
public static float GetDamageForHitboxType(HitBoxType type)
{
switch(type)
{
case HitBoxType.Head: return 50;
case HitBoxType.Body: return 20;
case HitBoxType.Leg: return 10;
case HitBoxType.Hand: return 5;
default: return 5;
}
}
}