判断周围是否有敌人的三种模式(转)

1、只攻击正前方的单位,向前发射一条射线,攻击碰到的单位

RaycastHit hit;
//range 射线的长度,即攻击范围,maskTarget敌方单位的mask,只攻击敌方单位
if(Physics.Raycast(unit.thisT.position, unit.thisT.forward,out hit, range, maskTarget))
{
    Unit targetTemp=hit.collider.gameObject.GetComponent();
    if(targetTemp!=null &&
    targetTemp.HPAttribute.HP>0)
    {
        target=targetTemp;
        if(attackMode==_AttackMode.StopNAttack)
        {
            if(attackMethod!=_AttackMethod.Melee)
            unit.StopAnimation();
            unit.StopMoving();
        }
    }
}

2、以己方单位为圆心的某一半径长度内

//返回相交球的所有碰撞体
    Collider[] cols=Physics.OverlapSphere(unit.thisT.position,range, maskTarget);
    //if(cols!=null && cols.Length>0)
    Debug.Log(cols[0]);
    if(cols.Length>0)
    {
        Collider currentCollider=cols[Random.Range(0,cols.Length)];
        Unit targetTemp = currentCollider.gameObject.GetComponent();
        if(targetTemp!=null &&
        targetTemp.HPAttribute.HP>0){
        target=targetTemp;
        if(attackMode==_AttackMode.StopNAttack)
        {
            if(attackMethod!=_AttackMethod.Melee)
            unit.StopAnimation();
            unit.StopMoving();
        }
    }
}

3、以己方单位为圆心的扇形范围内

Collider[] cols=Physics.OverlapSphere(unit.thisT.position,range, maskTarget);
//if(cols!=null && cols.Length>0)
 Debug.Log(cols[0]);
if(cols.Length>0)
{
    Collider currentCollider=cols[0];
    foreach(Collider col in cols)
    {
        Quaternion targetRot=Quaternion.LookRotation(col.transform.position-unit.thisT.position);
        if(Quaternion.Angle(targetRot, unit.thisT.rotation)
            Unit targetTemp=currentCollider.gameObject.GetComponent();
            if(targetTemp!=null &&
            targetTemp.HPAttribute.HP>0)
        {
            target=targetTemp;
            if(attackMode==_AttackMode.StopNAttack)
            {
                if(attackMethod!=_AttackMethod.Melee)
                    unit.StopAnimation();
                unit.StopMoving();
            }
            break;
        }
    }
}
时间: 2024-10-12 17:46:11

判断周围是否有敌人的三种模式(转)的相关文章

判断周围是否有敌人的三种模式

只攻击正前方的单位,向前发射一条射线,攻击碰到的单位 RaycastHit hit; //range 射线的长度,即攻击范围,maskTarget敌方单位的mask,只攻击敌方单位 if(Physics.Raycast(unit.thisT.position, unit.thisT.forward, out hit, range, maskTarget)){ Unit targetTemp=hit.collider.gameObject.GetComponent(); if(targetTemp

文件打开的三种模式

文件打开的三种模式 文件操作的基础模式有三种(默认的操作模式为r模式): r模式为read w模式为write a模式为append 文件读写内容的格式有两种(默认的读写内容的模式为b模式): t模式为text b模式为bytes 需要注意的是:t.b这两种模式均不能单独使用,都需要与r/w/a之一连用. 一.文件打开模式之r模式 f = open('32.txt', mode='r') # 报错 f.write() f.close() # rt: read by text # windows的

httpd的三种模式比较

查看你的httpd使用了哪种模式: /usr/local/apache2/bin/httpd -V |grep 'Server MPM' 使用哪种模式,需要在编译的时候指定 --with-mpm=prefork|worker|event 当然也可以编译的时候,让三者都支持: --enable-mpms-shared=all 然后在配置文件中,修改 LoadModule mpm_worker_module modules/mpd_mpm_worker.so 2.2版本默认为worker,2.4版本

Oracle 11g dataguard三种模式以及实时查询(Real-time query)功能设置

之前我们讨论过<Linux Oracle 11g dataguard物理standby 配置过程>, 但是在实际过程中会遇到不同的问题,首先我们讨论下ORACLE DATAGUARD的三种模式, 保护最大化:这种模式的配置可以保证主库和备库的同步,任何情况下主库的损毁都不会导致已提交数据的丢失.如果主库和备库之间的网络出现问题,或者备库本身出现问题,都会导致主库停止数据处理. 可用最大化:这种模式和上面一种类似,也是会保证主库和备库的同步,区别在于,当网络或备库不可用时,主库仍然可以继续处理.

delegate,notifucation,KVO三种模式实现通信的优缺点

在开发ios应用的时候,我们会经常遇到一个常见的问题:在不过分耦合的前提下,controllers间怎么进行通信.在IOS应用不断的出现三种模式来实现这种通信: 1.委托delegation: 2.通知中心Notification Center: 3.键值观察key value observing,KVO 上面的三种模式是什么? 三种模式都是一个对象传递事件给另外一个对象,并且不要他们有耦合. 三种模式都是对象来通知某个事件发生了的方法,或者更准确的说,是允许其他的对象收到这种事件的方法.这对于

小米、华为与联想,背后隐含的三种模式(转)

1 月 15 号参加了小米产品发布会,正当雷军在台上讲小米 Note 的种种功能时我却突然意识到小米.华为.联想的拼杀到了 2015 年已经完全进入到了一个新的阶段.在功能和体验上诚然大家会激烈的彼此追赶但其实已经拉不开太多的距离,最终决定胜负的很可能是手机背后所体现出来的模式.这很像一场国战,胜负不再取决于一城一地而是取决于综合国力. 小米.华为与联想背后隐含的商业模式 虽然最终呈现给用户的手机是类似的,但就我看来这三家背后隐含的模式却是有本质不同. 联想是经典的经营管理派.这一派的基本逻辑是

hadoop学习;自己定义Input/OutputFormat;类引用mapreduce.mapper;三种模式

hadoop切割与读取输入文件的方式被定义在InputFormat接口的一个实现中.TextInputFormat是默认的实现,当你想要一次获取一行内容作为输入数据时又没有确定的键.从TextInputFormat返回的键为每行的字节偏移量,但眼下没看到用过 曾经在mapper中曾使用LongWritable(键)和Text(值),在TextInputFormat中,由于键是字节偏移量.能够是LongWritable类型,而当使用KeyValueTextInputFormat时,第一个分隔符前后

Hive 之元数据库的三种模式

Hive 介绍 http://www.cnblogs.com/sharpxiajun/archive/2013/06/02/3114180.html Hive的数据类型和数据模型 http://www.cnblogs.com/sharpxiajun/archive/2013/06/03/3114560.html Hive内表与外表详述 http://www.aboutyun.com/thread-7458-1-1.html Hive的体系结构 http://blog.csdn.net/zhoud

APP开发的三种模式

APP开发的三种模式:Native App .web App.hybrid App 1.原生app 使用原生app (android或iOS)开发APP.. 技术: Native技术主要用于提供原生支持,要做到跨平台,就需要掌握部分Android和iOS的知识,除了多线程,文件存储等基础知识,Android需要非常熟练的掌握WebView.WebSettings.WebChromeClient.WebClient四大对象.iOS需要非常熟练掌握UIWebView对象. 缺点:技术多,门槛高.无法