Хорошо, поэтому я не могу понять, как сделать эту игру rpg im, работающую для андроида, столкновением. Я рисую карту на экране в выделенной части, в которой находится символ. Я перемещаю персонаж на 64 числа по экрану, и когда он попадает в рамки экрана, он затем перемещает карту и выглядит как символ перемещается по карте. Он останавливается, когда карта попадает в конец, она больше не перемещает экран. То, что я пытаюсь сделать, - это выяснить, находится ли мой персонаж в определенном растровом изображении и не пропускать его. Вот код для перемещения моего игрока и сама карта. Персонаж и плитки - это растровые изображения. Что-нибудь еще нужно, чтобы вы могли помочь мне лучше комментировать, и я опубликую больше и как это работает.Обнаружение столкновений с растровым изображением Android
Редактировать: sp.yp и sp.xp - это положение символа на экране.
Это Нарисуйте карту на экране:
public void draw(Canvas canvas){
//How many tiles are on the screen length times width
for(int x = 0; x <= 31;x++){
for(int y = 0; y <= 17;y++){
switch(Map[Mapx + x][Mapy + y]){
case 0:
canvas.drawBitmap(BLOCK_ROCK, x*32,y*32,null);
break;
case 1:
canvas.drawBitmap(BLOCK_OCEAN, x*32,y*32,null);
break;
case 2:
canvas.drawBitmap(BLOCK_GRASS, x*32,y*32,null);
break;
case 3:
canvas.drawBitmap(BLOCK_ROCK, x*32,y*32,null);
break;
case 4:
canvas.drawBitmap(BLOCK_FLOWER, x*32,y*32,null);
break;
}
}
}
}
Это Movment игрока, эти методы вызываются, когда человек попадает в клавиатуру я нарисовали на экран:
public void Down(){
if(sp.yp == 512){
if(w.Mapy == w.mapheight - 17 - 1){
}else{
w.Mapy +=1;
}
}else{
sp.setYd(64);
sp.update();
sp.setYd(0);
}
}
public void Left(){
if(sp.xp == box.xMin + 32){
sp.isRight = false;
if(w.Mapx == 0){
}else{
w.Mapx -=1;
}
}else{
sp.isRight = false;
sp.setXd(-64);
sp.update();
sp.xd = 0;
}
}
public void Jump(){
if(sp.yp == 64){
if(w.Mapy == 0){
}else{
w.Mapy -=1;
}
}else{
sp.setYd(-64);
sp.update();
sp.setYd(0);
}
}
public void Right(){
if(sp.xp == 992){
sp.isRight = true;
if(w.Mapx == w.mapwidth - 31 - 1){
}else{
w.Mapx +=1;
}
}else{
sp.isRight = true;
sp.setXd(64);
sp.update();
sp.xd = 0;
}
}
Рассмотрим форматирование кода поэтому его легче читать. Вложенные для петель без отступов - беспорядок. – AHungerArtist
количество плиток на экране, длина раз ширина – Xwire
Что? Это даже не имеет смысла. Я сказал, что вы должны рассмотреть форматирование кода, потому что ваши вложенные для циклов не имеют отступов. Это не имеет никакого отношения к тому, что делает код, но как легко его читать. Разве вы не видите это во втором фрагменте кода? – AHungerArtist