Рефлексивная логика высказываний - PullRequest
0 голосов
/ 05 сентября 2018

У меня были некоторые проблемы со столкновениями в моей игре, но я не хочу повторять каждое физическое столкновение снова для какой-то почти законченной игры, это действительно играбельно, проблема в том, что есть какая-то толкающая сила, которая делает персонаж проходит через стену, и затем, если вы получили достаточно удара, вы не сможете двигаться, я подумал о том, чтобы сделать

if (position + this power).intersects(wall)
     Don't apply power;

Но я думаю, что я сделал что-то не так и не смог исправить это, а потом я попробовал что-то другое:

if(char.intersects(wall)) //It will do only if the character is inside the wall
{
   if(char.y < wall.y) //If the character is below the wall's top
       char.y++; //It will go up 
   else if(char.y > wall.y - wall.height)//If the character is above the bottom of the wall
       char.y--; // it will go down
}

Как видите, проблема в том, что они рефлексивны, если один из них верный, другой тоже всегда верный, и я не могу думать, что мне нужно сделать, чтобы решить эту проблему

Если он находится ниже верхней части стены, он, безусловно, выше нижней части

Если оно находится над дном стены, оно, безусловно, находится под верхом

Тогда это создает проблему, при которой он всегда будет выполнять две функции, пытаясь решить проблему с помощью else if, но проблема заключается в том, что при смещении символа с помощью ++ и - этого недостаточно, символ становится застрял на стене, кто-то может показать мне ошибку в моей логике?

...