So I’m fairly new to using Unity so I don’t know everything about it. The problem is that Unity keeps crashing for no reason and I wanted to ask if some of u can get behind my promblem.
This is the part of my Code thats causing the Problem (I think…) Its very long and probably really bad but like I said I can’t really pinpoint the reason unity keeps crashing. (The Code is for an Enemy in a Turn Based Combat (kinda like DnD) and it normally keeps chrashing on the Turn right brfore the Enemy gets close enough to the player to Attack)
void Update()
{
if (Leben <= 0)
Die();
if (Turn == true)
{
if (CheckPlayerProx() == 1)
closeProx= true;
else
closeProx= false;
if CheckClose() == 1)
close= true;
else
close= false;
}
}
void CheckMove()
{
rechts = 0;
links = 0;
oben = 0;
unten = 0;
while (Movement > 0 && closeVal== false)
{
if (XGegen - 1 > XWert)
{
Movement--;
XWert++;
rechts++;
}
if (XGegen + 1 < XWert)
{
Movement--;
XWert--;
links++;
}
if (YGegen - 1 > YWert)
{
Movement--;
YWert++;
oben++;
}
if (YGegen + 1 < YWert)
{
Movement--;
YWert--;
unten++;
}
if (XWert == XGegen + 1 && YWert == YGegen - 1)
{
int ur = Mathf.RoundToInt(Random.Range(1f, 2f));
if (ur == 1)
{
Movement--;
YWert++;
oben++;
}
else
{
Movement--;
XWert--;
links++;
}
}
else
{
if (XWert == XGegen - 1 && YWert == YGegen - 1)
{
int ul = Mathf.RoundToInt(Random.Range(1f, 2f));
if (ul == 1)
{
Movement--;
YWert++;
oben++;
}
else
{
Movement--;
XWert++;
rechts++;
}
}
else
{
if (XWert == XGegen + 1 && YWert == YGegen + 1)
{
int or = Mathf.RoundToInt(Random.Range(1f, 2f));
if (or == 1)
{
Movement--;
YWert--;
unten++;
}
else
{
Movement--;
XWert--;
links++;
}
}
else
{
if (XWert == XGegen - 1 && YWert == YGegen + 1)
{
int ol = Mathf.RoundToInt(Random.Range(1f, 2f));
if (ol == 1)
{
Movement--;
YWert--;
unten++;
}
else
{
Movement--;
XWert++;
rechts++;
}
}
}
}
}
}
Moving();
}
void Moving()
{
if (rechts > 0)
StartCoroutine(MoveRight());
else
if (links > 0)
StartCoroutine(MoveLeft());
else
if (oben > 0)
StartCoroutine(MoveUp());
else
if (unten > 0)
StartCoroutine(MoveDown());
else
Moving();
}
IEnumerator MoveRight()
{
rechts--;
Geh--;
yield return new WaitForSeconds(0.3f);
transform.Translate(50f, 0f, 0f);
X++;
if (Geh > 0 && close== false)
Moving();
else
CheckAngriff();
}
IEnumerator MoveLeft()
{
links--;
Geh--;
yield return new WaitForSeconds(0.3f);
transform.Translate(-50f, 0f, 0f);
X--;
if (Geh > 0 && close== false)
Moving();
else
CheckAngriff();
}
IEnumerator MoveUp()
{
oben--;
Geh--;
yield return new WaitForSeconds(0.3f);
transform.Translate(0f, 50f, 0f);
Y++;
if (Geh > 0 && close== false)
Moving();
else
CheckAngriff();
}
IEnumerator MoveDown()
{
unten--;
Geh--;
yield return new WaitForSeconds(0.3f);
transform.Translate(0f, -50f, 0f);
Y--;
if (Geh > 0 && close== false)
Moving();
else
CheckAngriff();
}