【游戏新作】【打砖块】终于解决圆和矩形的碰撞问题
vb吧
全部回复
仅看楼主
吧务
level 12
0yufan0 楼主
开发这个游戏除了碰撞问题以外没碰到什么特别的问题。因为大多数问题都已经在以前的【贪吃蛇】https://tieba.baidu.com/p/4348457990?pid=83849700218上解决了。包括游戏循环、FPS设置、方向控制、UI打印等等。
这次在解决圆和矩形的碰撞上花了几个小时的时间。看了以前吧上的一些碰撞问题,基本上是解决矩形之间的,但是圆和矩形的碰撞没有在吧上有一个很好的解决办法,并且司仪君在皮卡君的帖子https://tieba.baidu.com/p/4367416971?pid=117324782475,有提到这个问题,但是并没有人给出答案。
自己想了好久,都没有找到很令人满意的解决办法,直到我看到了这篇文章https://www.cnblogs.com/sevenyuan/p/7125642.html。通过理解,我完成了圆和矩形的碰撞函数,并且根据游戏需要,增加了可以判断出碰撞方向功能。之后的问题就相对简单了。二楼发源码链接[哈哈]
现在贴吧没什么人啊哈哈哈哈!莫非个个都去学安卓、IOS了吗?我最近也在学python,搞搞爬虫。
2018年02月18日 12点02分 1
吧务
level 12
0yufan0 楼主
很快就又要忙了,所以地图、美化、控制、说明、设置、图标等等这些都没弄,等以后有空再更新啦。又或者哪位有兴趣的大哥帮忙更新一下也是非常让人开心的。不罗嗦,下面给出链接。
【打砖块源码】链接:[无效] https://pan.baidu.com/s/1i6Biw0P
密码:2ggq
2018年02月18日 12点02分 2
有问题可以邮箱联系我
2018年02月18日 12点02分
@0yufan0 来晚了,再求一遍源码
2021年05月26日 09点05分
吧务
level 12
0yufan0 楼主
吧里少人唯一的好处就是帖子沉得慢[吐舌]
2018年02月18日 12点02分 3
吧务
level 12
0yufan0 楼主
@命幽 命幽君我这几天看到你还在[吐舌] 也帮我看看
2018年02月18日 12点02分 4
吧务
level 14
碰撞检测思路大概是什么样的?
2018年02月18日 12点02分 5
看上面的文章讲得比较全
2018年02月19日 00点02分
level 8
坐标判断法?
2018年02月18日 14点02分 6

2018年02月19日 00点02分
level 15
厉害了,好复杂
2018年02月18日 21点02分 7
太复杂了吗?
2018年02月19日 00点02分
@0yufan0 感觉好复杂.怎么做到的啊.这么厉害.
2018年02月19日 01点02分
@oshi001 额 这个对于你来说不难吧。
2018年02月19日 01点02分
@0yufan0 这个难啊,其实是并没有玩过这些.游戏类的东东都没玩过.
2018年02月19日 01点02分
level 14
[真棒] 圆和矩形碰撞确实比其他碰撞检测麻烦一点。
2018年02月19日 00点02分 8
想了好久没想到,后来网上看到了
2018年02月19日 00点02分
并不难,把麻烦的事情封装成一个函数就方便了,不就是先拿圆的外接矩形跟目标矩形判断碰撞嘛,然后再用勾股定理判断目标矩形的4个角跟圆的碰撞。
2019年10月31日 09点10分
吧务
level 12
0yufan0 楼主
我说说为什么我的这两个游戏都用的fps游戏循环,而不是控件。因为我认为这是动作类游戏的标准编写方法,会有很多我想不到的好处。另外就我想得到的优点就是,把界面和操作代码分开,从而能够做到两者互不干扰。假如一天我需要优化UI,那么我就可以大大缩短我的时间。
2018年02月19日 01点02分 9
对的 这是一个游戏编程的思想 一般就是 对象创建扔一边 逻辑更新扔一边
2018年02月20日 07点02分
就像是 love2d 有 渲染 也有单独的 逻辑更新 或 phaser的 init 初始化 prelaod加载资源 create 对象创建 update游戏逻辑更新 render图形渲染
2018年02月20日 07点02分
如果对游戏编程感兴趣 我建议你学习phaserjs [滑稽] js可跨平台 哈哈 我还出了几个教程 有phaser入门跟案例 还有phaser编辑器的使用教程[勉强]
2018年02月20日 07点02分
@命幽 [黑线]额 我看你什么语言都有所涉及。对我来说,并没有学一门语言需要花费的时间。
2018年02月20日 13点02分
吧务
level 12
0yufan0 楼主
2018-02-19 添加游戏音效
链接:[无效] https://pan.baidu.com/s/1jIZmFR4 密码:tkay
2018年02月19日 03点02分 10
level 12
打砖块,圆球和板子之间碰撞我用的公式比较简单。
球心y + 球r >= 板y and (球心x >= 板x and 球心x <= 板x + 板width),没有角度,只控制x速度和y速度,碰撞随机给了个加速度。和砖的碰撞一样,但是需要判断纵向的碰撞。我当时用的算法比较垃圾,球每动一下就遍历砖块判断碰撞,做的好一点应该只判断最外层的砖块。
难点应该是碰撞时的角度还有板子速度,去算出球碰撞后的发射角度和发射速度。有加速度才有意思些。
2018年02月19日 22点02分 11
你用的碰撞算法我在给出的文章中有提到,叫轴对称包围盒,因为我不是很理解所以没用。
2018年02月20日 04点02分
遍历所有砖块进行碰撞检测在我看来并没有很垃圾啊,而且效率一点也不低。即便有一百个砖块遍历下来也不需要0.1秒。
2018年02月20日 04点02分
你的这个创意我也有想过,通过球轨迹与挡板所成的角度、球的下落速度、挡板的前进速度计算出反弹的速度和方向。但是在我做到这一步的时候我发现并没有我想的那么复杂,就可以实现我需要的效果。
2018年02月20日 04点02分
level 12
https://tieba.baidu.com/p/5250068635?share=9105&fr=share&see_lz=0&sfc=copy&client_type=2&client_version=9.3.8.0&st=1519080657&unique=96594B88010E22F79693ADBF51ACDD38
我这儿也有打砖块,当时学GDI+练手写的,效率很低很低,但是套路还行,这个套路做那些金典的小游戏完全适用了
2018年02月19日 22点02分 12
我现在没办法看你的代码,但是你说你的CPU占用达10%,还用了timer控件,我怀疑你的思路有点问题。你可以看一下我的代码,fps控制在80时在我的电脑CPU占用不到3%。
2018年02月20日 04点02分
不介意可以留个联系方式,有空多交流
2018年02月20日 04点02分
可以拿GDI+加载图片,再转成GDI的HBITMAP给GdiAlphaBlend用,效率问题就不存在了😂。
2019年10月31日 09点10分
吧务
level 13
坐标 距离
[乖]可惜我已经忘了数学了。。。
我现在在用vbs写小游戏 你有兴趣可以去vbs吧看看[滑稽]
目前写了个游戏类
游戏案例 已经有几个了
打砖块 躲飞机 打飞机 飞翔的小鸟 [滑稽]
2018年02月20日 06点02分 13
吧务
level 13
2018年02月20日 07点02分 14
吧务
level 13
用vbs写比vb6方便多了 [滑稽] 要不你也来跳火坑吧 下个游戏准备写贪吃蛇了[滑稽]
刚花了将近20天写了个重力感应游戏 用了js的游戏框架 phaser 发给你玩玩 只有手机上能玩[滑稽]
http://phasermeeting.webxinxin.com/submits/2/rocket/
火箭飞升
2018年02月20日 07点02分 15
[滑稽]你不是有VB版的飞机吗
2018年02月20日 13点02分
@0yufan0 贪吃蛇的坑我跳过了,你可以去看看[吐舌]
2018年02月20日 13点02分
@0yufan0 有啊 都有 用不同语言实现下
2018年02月21日 01点02分
@0yufan0 我用js写过
2018年02月21日 01点02分
1 2 尾页