找回密码
 立即注册
收起左侧

关于小游戏炸弹人的若干问题。跪求大神!

10
回复
9924
查看
[复制链接]
累计签到:1 天
连续签到:1 天
来源: 2015-10-26 19:03:41 显示全部楼层 |阅读模式
6Qter豆
本帖最后由 jajaja520 于 2015-10-26 19:47 编辑

最近在做一个小游戏,炸弹人。就是简化版的泡泡堂。

遇到一个无从下手的问题。

我从网上找了几幅PNG图片,游戏人物行走素材,比如,向左,有4张图,分解行走动作。总共16张图。

然后用了 贴吧 QT吧 里一位吧友的代码( http://tieba.baidu.com/p/3472442952 ),可以实现用方向键行走时,反复重绘各个方向的4帧图。

虽然效果有点差,不过也能接受。

但是,当我另外写了一个放置炸弹的类,然后判断游戏人物与炸弹碰撞的时候,一直出错。

比如 放置炸弹后,走向炸弹,有些时候离炸弹很远就走不动了,有些时候都能穿越过去。判断位置非常不准确。

我没有用Graphics什么的,就是搞一个容器,把图片加载进去,然后update()函数的更新时间设置为30毫秒

不停地刷新paintEvent()  

paniteEvent(QPaintEvent* event)
{
     QPainter* painter = new QPainter(this);
     for(QList<GameElement*>::iterator it = gameElementList.begin();it != gameElementList.end();++it)
     {
        (*it)->logic();                         // 人物类和炸弹类都有着两个函数,实现根据变化不停的绘制。
        (*it)->draw(painter);              
     }
}

判断碰撞代码
if(event->key() == Qt::Key_W)
    {

        if(renwu->bindRect.intersects(zhadan1->bindRect))   //如果把这个 if 语句加在每一个方向前,那么
        {                                                                          //只要人物碰到炸弹,就动不了(后退也不行),只能原地 “太空步"
            renwu->setFaceDirection(0);
            renwu->startMove(0,0);
        }
        else
        {
        renwu->setFaceDirection(0);
        renwu->startMove(0,-20);
        }
    }

我的问题是,如果能用我的这种方法 怎么样才能准确判断碰撞?

如果我的方法不能实现的话,比如说必须要用Graphics,那么怎么才能实现键盘控制人物行走(每个方向都有4帧图,有一种行走的感觉,而不是一张图滑过去的感觉。)


qt4 示例里有一个飞机打石头的游戏,但是看不懂,毕竟只看过Qt creator快速入门前11章。

版本: QT 4.7.2   Qt Creator 2.1.0

最佳答案

查看完整内容

建议用图形视图模型来做这个,因为自带了碰撞检测,所以不用像你这样自己来判断。可以参考劳拉方块游戏。 http://www.qter.org/forum.php?mod=viewthread&tid=2652&extra=page%3D1
回复

使用道具 举报

累计签到:1570 天
连续签到:1 天
2015-10-26 19:03:42 显示全部楼层
建议用图形视图模型来做这个,因为自带了碰撞检测,所以不用像你这样自己来判断。可以参考劳拉方块游戏。
http://www.qter.org/forum.php?mo ... &extra=page%3D1
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2015-10-26 19:09:43 显示全部楼层
链接: http://pan.baidu.com/s/1ntH59pB 密码: ubhm

我的代码。
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2015-10-26 20:14:41 显示全部楼层
@yafeilinux 老师跪求指明方向!!!
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-10-27 11:06:32 显示全部楼层
留个名 感觉很有意思的东西   
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2015-10-27 11:31:28 显示全部楼层
z55716368 发表于 2015-10-27 11:06
留个名 感觉很有意思的东西

大兄弟,可否帮忙艾特一下论坛里的大神?我刚来,还不太清楚。非常感谢!

点评

找版主赛 他们有时候在有时候也不再的 看到了能回答的就会给你回答  详情 回复 发表于 2015-10-27 14:39
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-10-27 14:39:02 显示全部楼层
jajaja520 发表于 2015-10-27 11:31
大兄弟,可否帮忙艾特一下论坛里的大神?我刚来,还不太清楚。非常感谢! ...

找版主赛 他们有时候在有时候也不再的 看到了能回答的就会给你回答
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2015-10-27 16:02:59 显示全部楼层
@a408815041
@Syylc120317 两位版主,可以帮我看看这个问题吗?
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2015-10-27 16:03:53 显示全部楼层
@a408815041 怎么不变蓝的

点评

好像要先加个好友 然后@貌似就可以了  详情 回复 发表于 2015-10-27 17:46
回复

使用道具 举报

累计签到:256 天
连续签到:1 天
2015-10-27 17:46:05 显示全部楼层
jajaja520 发表于 2015-10-27 16:03
@a408815041 怎么不变蓝的

好像要先加个好友 然后@貌似就可以了
回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2015-10-30 19:09:33 显示全部楼层
怎么过了这么久,还没人回答?? 贵论坛的高手大神去哪里了????
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了