Witam, próbuję napisać skrypt na kolizję do gry w której każdy krok ma zawsze taką samą odległość i gracz porusza się po niewidzialnej siatce, jak w starych grach 2D.
Oto część skryptu odpowiadająca za tą kolizję
void OnCollisionEnter2D(Collision2D coll) //TODO: System blokowania klawiszy na podstawie obliczeń Odległości
{
if(coll.gameObject.tag == "NPC" || coll.gameObject.tag == "Object")
{
GameObject _NPC = coll.gameObject;
if(Player.position.y - coll.transform.position.y == -10 && Player.position.x == coll.transform.position.x) //W
{
print ("W");
collW = true;
}
else if(Player.position.y - coll.transform.position.y == 10 && Player.position.x == coll.transform.position.x)//S
{
print ("S");
collS = true;
}
else if(Player.position.x - coll.transform.position.x == 6.4 && Player.position.y == coll.transform.position.y)//A
{
print ("A");
collA = true;
}
else if(Player.position.x - coll.transform.position.x == -6.4 && Player.position.y == coll.transform.position.y)//D
{
print ("D");
collD = true;
}
}
}
void OnCollisionExit2D(Collision2D coll)
{
if (coll.gameObject.tag == "NPC" || coll.gameObject.tag == "Object")
{
collW = false;
collS = false;
collA = false;
collD = false;
}
}
Gdy zajdzie jakakolwiek kolizja z obiektem który posiada Tag NPC bądź object dobiera się któryś z ifów.
Player jest obiektem klasy Transform, który jest po prostu obiektem sceny przeniesionym do Inspektora do skryptu PlayerEssentials (przedstawiony powyżej ).Gdy uruchamiam grę i wchodzę w kolizję z takim obiektem z tagiem NPC to żaden z 4 ifów się nie wykonuję zaś if na samym początku metody OnCollisionEnter2D się wykonuję.
Co powinienem poprawić aby to działało jak należy ?