[英]Collision detection with bitmap Android
好吧,所以我不知道如何使这个rpg游戏即时通讯适用于android发生冲突。 我在角色所在的可绘制部分中在屏幕上绘制地图。我将字符在屏幕上移动了64个量,当它到达屏幕边界时,它将移动地图,看起来就像在角色上在地图上移动。 当地图到达终点时它将停止,它不再移动屏幕。 我想做的是找出一种办法检查我的角色是否在某个位图中,而不让它通过。 这是我的玩家移动的代码,以及地图本身。 角色和图块是位图。 需要您提供任何其他帮助,以帮助我更好地发表评论,我将发布更多内容以及它的工作方式。
编辑: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;
}
}
}
}
这是播放器的动作,当有人按下我在屏幕上绘制的键盘时,将调用以下方法:
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;
}
}
您应该研究一个游戏引擎来处理这种事情。 有几种易于导入到项目中并提供大量功能的功能,因此您可以更多地设计游戏和媒体资源。 相信我,您可能不想对整个引擎进行编码。
检查AndEngine- http: //www.andengine.org/
Libgdx- http://code.google.com/p/libgdx/
我建议使用AndEngine,因为有一个伟大的应用程序,可以使用简单的示例进行试验。 您可以在以下位置找到它:
code.google.com/p/ andengineexamples /
(地址中没有空格...对不起,您不能发布两个以上的链接)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.