游戏开发论坛

 找回密码
 立即注册
搜索
查看: 8606|回复: 23

关于子弹射击物体的问题,希望大家讨论!

[复制链接]

1

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
QQ
发表于 2004-6-15 15:03:00 | 显示全部楼层 |阅读模式
我遇到这样的问题。
比如说有一个子弹坐标为z,和10物体坐标为w[10]

当我判断判断子弹是否击中物体时
for(int i=0;i<10;i++)
{
  if(z==x)  击中   //坐标相同,击中
  else   没有击中    //坐标不同,没有击中
}

但是如果现在有10个子弹z[10]和100个物体w[100]
for(int j=100;j<100;j++)
for(int i=0;i<10;i++)
{
  if(z==x[j])  击中
  else   没有击中
}

而且如果30ms刷新一次,也就是每次算一次,这样的话效率太低了吧!
各位有什么好办法来解决这个问题吗?

1万

主题

1万

帖子

2万

积分

管理员

中级会员

Rank: 9Rank: 9Rank: 9

积分
20547
发表于 2004-6-15 15:21:00 | 显示全部楼层

Re:关于子弹射击物体的问题,希望大家讨论!

几百个应该不成问题吧,现在CPU很快,呵呵!

如果说实在太多,可以考虑进行区域划分计算,至于怎么算还没想清楚。

if(子弹进入A区域)
{
    for( i=0; i<A区域里面的物体; i++ )
    {
    }
}
if(子弹进入B区域)
{
    ....
}

不知道进行区域判定会不会比单纯计算要来得消耗资源。呵呵

1

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
QQ
 楼主| 发表于 2004-6-15 20:35:00 | 显示全部楼层
分区域这个想法不错。值得考虑。呵呵。

不过我想在真正在游戏中实现的时候,不知道会怎样了。

1

主题

24

帖子

24

积分

注册会员

Rank: 2

积分
24
发表于 2004-6-16 01:08:00 | 显示全部楼层

Re:关于子弹射击物体的问题,希望大家讨论!

刚好我在我的毕业论文中解决了这个问题,使用一个矩阵来记录地图上的物体,当物体移动到一个矩阵的时候只要检测矩阵内有没有物体,没有就pass,有就进行碰撞检测,效率很高地说。如果大家觉得可以参考一下的话我可以把论文发到网上来。

15

主题

1268

帖子

1268

积分

金牌会员

Rank: 6Rank: 6

积分
1268
发表于 2004-6-16 09:06:00 | 显示全部楼层

Re:关于子弹射击物体的问题,希望大家讨论!

你可以降地图分成块,物体所在的块在处理物体时被视为存在阻塞,这样处理子弹是直接查找子弹所在方块是否有阻塞,有则向此方块写入扣血信息,再次处理物体时物体检查自身所在方块是否有扣血信息,有责相应扣除生命值。
这个在我的《联合攻击》里面是这样做的。

1

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
QQ
 楼主| 发表于 2004-6-16 12:59:00 | 显示全部楼层

Re: Re:关于子弹射击物体的问题,希望大家讨论!

Civilian: Re:关于子弹射击物体的问题,希望大家讨论!

你可以降地图分成块,物体所在的块在处理物体时被视为存在阻塞,这样处理子弹是直接查找子弹所在方块是否有...


这个方法强的一逼阿。好厉害的想法,强人!!

1

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
QQ
 楼主| 发表于 2004-6-16 13:03:00 | 显示全部楼层

Re: Re:关于子弹射击物体的问题,希望大家讨论!

kaiz: Re:关于子弹射击物体的问题,希望大家讨论!

刚好我在我的毕业论文中解决了这个问题,使用一个矩阵来记录地图上的物体,当物体移动到一个矩阵的时候只要...


这种方法我感觉还是要逐一的比较阿,“检测矩阵内有没有物体”还是要两个for循环,不然怎么知道有没有物体。
而且“碰撞检测”是什么原理,可否解释一下?谢谢

15

主题

1268

帖子

1268

积分

金牌会员

Rank: 6Rank: 6

积分
1268
发表于 2004-6-16 18:08:00 | 显示全部楼层

Re: Re: Re:关于子弹射击物体的问题,希望大家讨论!

多多丸: Re: Re:关于子弹射击物体的问题,希望大家讨论!



这个方法强的一逼阿。好厉害的想法,强人!!

缺点就是精度太低,而且要是物体运动太快,就会出现打中没死和没打中死了的情况

1

主题

18

帖子

18

积分

新手上路

Rank: 1

积分
18
QQ
 楼主| 发表于 2004-6-16 21:36:00 | 显示全部楼层

Re: Re: Re: Re:关于子弹射击物体的问题,希望大家讨论!

Civilian: Re: Re: Re:关于子弹射击物体的问题,希望大家讨论!


缺点就是精度太低,而且要是物体运动太快,就会出现打中没死和没打中死了的情况


怎么会呢?物体每次移动,比如说30ms,都会判断该地点是否有扣血信息。而且是实时的,怎么会出现这样的情况。

64

主题

856

帖子

856

积分

高级会员

Rank: 4

积分
856
QQ
发表于 2004-6-17 09:17:00 | 显示全部楼层

Re:关于子弹射击物体的问题,希望大家讨论!

物体移动时,将地图上该物体所占位置定为“有物体”标志,并将该地点设立指向物体的指针,子弹移动时检测该地点是否为“有物体”即可判断是否击中物体,击中的物体根据物体指针即可得出
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-7 10:45

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表