繁体   English   中英

Android位图的碰撞检测

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM