示例#1
0
 private void extraDamageEffect(PlayerBasic playerAim)                                                                 //额外添加挂在的计算脚本
 {
     if (thePlayer.theAttackLinkNow != null && string.IsNullOrEmpty(thePlayer.theAttackLinkNow.conNameToEMY) == false) //效果不可叠加
     {
         System.Type theType = System.Type.GetType(thePlayer.theAttackLinkNow.conNameToEMY);
         if (!playerAim.gameObject.GetComponent(theType))
         {
             try
             {
                 playerAim.gameObject.AddComponent(theType);
                 //print("makeEffect3");
             }
             catch
             {
                 //无法添加这个效果
                 //那么就转换成伤害,造成2点真实伤害
                 thePlayer.OnAttack(playerAim, 2, true);
                 //print ("canNotAddEMY");
             }
         }
         else
         {
             effectBasic theEffect = playerAim.gameObject.GetComponent(theType) as effectBasic;
             theEffect.updateEffect();
             //print ("update");
         }
         thePlayer.theAttackLinkNow.conNameToEMY = "";
     }
 }
示例#2
0
    //真正的攻击方法
    private void Attack(float makeDamage)
    {
        if (!thePlayer || makeDamage < 0)
        {
            return;
        }
        //如果makeDamage是负数,就说明制作获得效果,但是不攻击
        float theDistanceCheck = thePlayer.theAttackAreaLength;

        theDistanceCheck += makeDamage;
        theEMY            = systemValues.searchAIMs(thePlayer.theAttackAreaAngel, theDistanceCheck, thePlayer.transform);
        List <PlayerBasic> toUSePlayerBasic = check();

        //print ("theEMY.count " + theEMY.Count);
        for (int i = 0; i < toUSePlayerBasic.Count; i++)
        {
            theDistance = Vector3.Distance(thePlayer.transform.position, toUSePlayerBasic [i].transform.position);
            //print (theDistanceCheck);
            if (theDistance <= theDistanceCheck && makeDamage >= 0)
            {
                //有些时候仅仅是增加脚本,例如“斗气爆发”不具备攻击效果
                thePlayer.OnAttack(toUSePlayerBasic [i], 0, false);              //造成直接的伤害
                extraDamageEffect(toUSePlayerBasic [i]);                         //添加额外的计算脚本,每个脚本的效果由脚本自己决定
                //print(theEMY[i].name+" is being attacked");

                //记录连击
                if (thePlayer == systemValues.thePlayer)
                {
                    systemValues.addHitCount(1);
                }
            }
        }
    }