Я хочу сделать небольшую игру для Android-устройств. Все работы ... кроме столкновений с игроком и объектами. Я сделал что-то не так? Я пробовал много методов проверки столкновения. E. g. пересекается, пересекает, содержит и функцию с самодельным испытанием на столкновение.Android Rect Collision
Edit: Моя проблема в том, что ничего не происходит :)
DisplayMetrics metrics = getContext().getResources().getDisplayMetrics();
int width = metrics.widthPixels;
int height = metrics.heightPixels;
private Bitmap player, enemy;
private int speedrun=1, x= 0, y = height - height/5, i=1, yg=height - height/5 + 40, xe= 920, xp =width/2 - width/4;
private Rect p, e;
public static int speed=0;
//other code
@Override
protected void onDraw(Canvas c)
{
c.drawColor(Color.CYAN);
handelPlayer();
p = new Rect(xp, y, 0, 0);
wayrect = new Rect(x, yg, 0, 0);
wayrect2 = new Rect(x + width, yg, 0, 0);
e = new Rect(xe, yg - 250, 0, 0);
c.drawBitmap(enemy, e.left, e.top, null);
c.drawBitmap(player, p.left, p.top, null);
}
public void handelPlayer()
{
x -= speed*speedrun;
xe -= speed*speedrun;
if (x + width < 0)
x = 0;
if (xe < -100)
xe = 920;
if (MainActivity.touch == 1)
{
y -= 100;//jump
MainActivity.touch = 0;
i = 1;
}
if (y <= height - height/5)
y += 3 * i/10; //gravity
i++;
if (p.intersect(e)) //collosision
speedrun = 0;
}
Что пошло не так? –
попробуйте изменить 'p.intersect (e)' на 'Rect.intersects (p, e)'. 'intersect' изменит прямоугольник' p' на пересечение, а 'Rect.intersects (Rect a, Rect b)' просто тест, который, я думаю, является тем, что вы ищете. –
Не забудьте проголосовать за ответ, который вы приняли, если найдете его полезным;) – Agostino