87 lines
2.9 KiB
C#
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;
|
|
}
|
|
}
|
|
|
|
}
|