游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: fancy_1234

求导弹导弹跟踪算法

[复制链接]

121

主题

2029

帖子

2034

积分

金牌会员

Rank: 6Rank: 6

积分
2034
QQ
发表于 2007-7-22 10:22:00 | 显示全部楼层

Re:求导弹导弹跟踪算法

请参考Game Programming Gems

29

主题

247

帖子

271

积分

中级会员

Rank: 3Rank: 3

积分
271
 楼主| 发表于 2007-7-22 15:19:00 | 显示全部楼层

Re:求导弹导弹跟踪算法

   我编了一个选择距离最近的敌机的函数,用了一个循环,编译通过,但是游戏中一发射导弹就程序错误.怀疑是算法的时间复杂度太高.

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2007-7-22 21:34:00 | 显示全部楼层

Re:求导弹导弹跟踪算法

目标飞机设置一个标记用来表示是否被导弹锁定,循环里先判断目标的这个标记

另外,判断距离时,不用开平方。

29

主题

247

帖子

271

积分

中级会员

Rank: 3Rank: 3

积分
271
 楼主| 发表于 2007-7-23 09:46:00 | 显示全部楼层

Re:求导弹导弹跟踪算法

  没有用开方,我的算法如下:
Getaim()    //寻找离本机最近的敌机,并返回其序号.  
{   
    int min=1000,i,aim=0;
    for(i=0;i<ENEMYNUMBER;i++)
    {  
       if((enemypos.x-pos.x)*(enemypos.x-pos.x)+(enemypos.y-pos.y)*(enemypos.y-pos.y)<min)        //当此敌机的距离小于当前记录时
     {min=(enemypos.x-pos.x)*(enemypos.x-pos.x)+(enemypos.y-pos.y)*(enemypos.y-pos.y);
      aim=i;}
      return aim;
     }
        
   

29

主题

247

帖子

271

积分

中级会员

Rank: 3Rank: 3

积分
271
 楼主| 发表于 2007-7-23 09:47:00 | 显示全部楼层

Re:求导弹导弹跟踪算法

  但是这个算法一启动就系统错误.

44

主题

305

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2007-7-23 16:52:00 | 显示全部楼层

Re:求导弹导弹跟踪算法

无论2D还是3D,只要获取要击中的目标的坐标然后在接近他的坐标就是,如果目标是活动的就要不停获取他的新目标,不停向新目标靠近就是!

2

主题

429

帖子

435

积分

中级会员

Rank: 3Rank: 3

积分
435
发表于 2007-7-24 00:11:00 | 显示全部楼层

Re: Re:求导弹导弹跟踪算法

fancy_1234: Re:求导弹导弹跟踪算法

Getaim()    //寻找离本机最近的敌机,并返回其序号.  
{   
    int min=1000,i,aim=0;
    for(i=0;i<ENEMYNUMBER;i++)
    {  
       if((enemypos.x-pos.x)*(enemypos.x-pos.x)+(enemypos.y-pos.y)*(enemypos.y-pos.y)<min)        //当此敌机的距离小于当前记录时
     {min=(enemypos.x-pos.x)*(enemypos.x-pos.x)+(enemypos.y-pos.y)*(enemypos.y-pos.y);
      aim=i;}
      return aim;
     }


(enemypos.x-pos.x)*(enemypos.x-pos.x)+(enemypos.y-pos.y)*(enemypos.y-pos.y
计算了两次,if前面先用临时变量记录

另外return写到外面来,现在这样编译器应该会提示最后还缺一个return的。

ENEMYNUMBER 值多少,能不能保证循环里的数组不越界?

你断点试试呢?

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

本版积分规则

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

GMT+8, 2026-1-25 18:04

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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