gpt4 book ai didi

java - Android 的碰撞&触摸+射击方法

转载 作者:行者123 更新时间:2023-12-01 15:26:38 24 4
gpt4 key购买 nike

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

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

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

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

    如何创建一种方法来创建墙壁和方 block 的碰撞?

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

提前谢谢您
阿基基

最佳答案

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

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

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

起始样本:月球着陆器有一个游戏循环,一个单独的线程,它不断重绘整个屏幕,它通过不断调用 doDraw 函数来实现这一点。然后,您应该使用 Canvas 绘制线条、圆形、方框、颜色和位图,以类似于您的游戏。 (canvas.draw....)Lunar landar 不使用 openGL,因此速度较慢,但​​更容易使用。

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

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

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

2次碰撞

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

  • 如果你的墙壁都是水平和垂直的(最简单),那么盒子碰撞会检查球的新x,y + -半径相对于墙壁的x,y,宽度和高度,这是一个很大的if语句,谷歌有数十亿个例子.

  • 如果你的墙壁是倾斜的,那么你需要线碰撞检测,你基本上有一条线( vector ),你的球的方向是你的墙的 vector ,创建一个函数来检查两条线碰撞的位置,并检查是否发生碰撞点既在墙上又在球的半径内(谷歌线交点功能)

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

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

关于java - Android 的碰撞&触摸+射击方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10066308/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com