子弹跟踪目标逻辑实现

条件:已知子弹位置,子弹速度大小m_nSpd、方向m_nAngle,目标的位置,每次转角角度FOLLOW_ANGLE

实现目标:要求子弹跟踪目标,且角度能够平滑地过度到正对目标

实现:

1、算出子弹与目标所成的角度nAngle

2、(ANGLE_CIRCLE=360)

            if(m_nAngle != nAngle){
                if(nAngle > m_nAngle){
                    if(nAngle < m_nAngle + 180){
                        m_nAngle += FOLLOW_ANGLE;
                        if(m_nAngle-FOLLOW_ANGLE <= nAngle && m_nAngle >= nAngle)
                            m_nAngle = nAngle;
                    }
                    else/* if (nAngle >= m_nAngle + 180)*/{
                        m_nAngle -= FOLLOW_ANGLE;
                        if(m_nAngle <= 0 && -m_nAngle >= ANGLE_CIRCLE-nAngle)
                            m_nAngle = nAngle;
                    }
                }
                else{
                    if(m_nAngle < nAngle + 180){
                        m_nAngle -= FOLLOW_ANGLE;
                        if(m_nAngle <= nAngle && m_nAngle+FOLLOW_ANGLE>=nAngle)
                            m_nAngle = nAngle;
                    }
                    else{
                        m_nAngle += FOLLOW_ANGLE;
                        if(m_nAngle >= ANGLE_CIRCLE && m_nAngle - ANGLE_CIRCLE >= nAngle){
                            m_nAngle = nAngle;
                        }
                    }
                }
            }

 

转载于:https://www.cnblogs.com/hewei2012/archive/2012/11/17/2775079.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值