0

我真的需要帮助。我正在为我最后一年的项目制作一个游戏应用程序。这是一个简单的游戏,您必须通过反弹墙壁或有角度的块将球射入目标。但是我需要两个方面的帮助:

  1. 射击机制类似于愚蠢的僵尸。您可以在屏幕上触摸一个十字准线,以指示您希望将球击向哪个方向。释放时,球应该朝那个方向移动,并有望进入目标,如果不是重力和摩擦力,它就会停止。

    问题是我如何编写这样的代码?

  2. 我需要球在墙壁上反弹,并且我将有一些倾斜的块,以便球必须击中某个部分才能到达目标。如果没有达到目标,球最终会停止。

    如何制作一种方法来创建墙和块的碰撞?

过去几周我一直在寻找帮助我制作游戏的教程,但没有找到与我正在制作的游戏类型相关的太多内容。如果可以提供示例代码或模板那就太好了,因为这是我的第一个 android 应用程序,它是我最后一年的项目,我没有太多时间了。

提前谢谢
akkki

4

1 回答 1

1

你的问题对于堆栈溢出来说太笼统了,没有人会为你做你的项目。假设你有基本的编程经验,如果没有得到书籍并首先学习。

假设您已经因为您的标签而选择了 Android,并假设 2d 游戏更容易。

预先请求:如果您还没有安装 java+eclipse+android sdk。创建一个新项目并使用月球着陆器示例,确保它在您的手机或模拟器上运行。

起始示例:月球着陆器有一个游戏循环,一个单独的线程不断重绘整个屏幕,它通过不断调用 doDraw 函数来做到这一点。然后,您应该使用画布来绘制线条、圆圈、框、颜色和位图,以类似于您的游戏。(canvas.draw ....) Lunar Landar 不使用 openGL,所以它更慢但更容易使用。

剥离样本:您可能不想要关键事件或月球飞船!删除 onDraw 函数中的所有内容 删除 onKeyUp、onKeyDown 删除任何发生的错误 新建一个

@Override
public boolean onTouchEvent(MotionEvent event){
    return false;
}

运行它你应该得到一个空白屏幕,这是你开始制作游戏的画布......你提到了球,把它分解成球是什么:位置和方向,为球创建变量 x,y direction_x 和 direction_y触摸事件将要更改球的方向,绘图事件将要移动球(将方向 x,y 添加到球 x,y)并绘制球(canvas.drawCircle(x,y,radius,new Paint())) 想要更多的球搜索和阅读数组。最重要的是开始简单和实验。

2 次碰撞

碰撞可以在 dodraw 函数中完成并分解为:移动一个对象,检查该对象是否已经通过了它应该去的地方,如果是,在任何人注意到之前将其移回......有许多不同的碰撞检测技术:

  • 如果你的墙都是水平和垂直的(最简单的),那么盒子碰撞会检查球的新 x,y+-radius 对墙 x,y,width 和 height 这是一个很大的 if 语句,谷歌有数十亿个例子。

  • 如果你的墙壁是有角度的,那么你需要线碰撞检测,你基本上有一条线(矢量),你的球正朝着你的墙的一个矢量创建一个函数来检查两条线在哪里碰撞并检查该点是否都在墙上并且在你的球的半径内(谷歌线交叉功能)

  • 或者您可以使用颜色选择,例如,您在知道所有墙壁都是红色的情况下绘制场景,然后检查新球 x,y 所在的点是否为红色并知道您击中了

祝你好运,希望这对你有所帮助,保持简单,反复试验,希望这能让你开始,你的下一个问题可以更具体。

于 2012-04-08T22:09:51.330 回答