|
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
|