public override void OnAttach()
    {
        CComponent acom = cobj.GetCom("AttrCom");

        attrCom = acom as AttrCom;

        RegBroadcastEvent((int)Const_Util.BATTLE_EVENT.USE_GAS);
    }
 public float GetHeroCarAttr(int key, out Vector3 vecValue)
 {
     if (mUnitList.Count > 0)
     {
         float      value   = 0.0f;
         BattleUnit unit    = mUnitList[0];
         AttrCom    attrCom = unit.GetCom("AttrCom") as AttrCom;
         attrCom.GetAttr(key, out value, out vecValue);
         return(value);
     }
     vecValue = Vector3.zero;
     return(0.0f);
 }
    public void Init(Vector2 speedRef)
    {
        baseMoveSpeed = new Vector3(speedRef.x, speedRef.y, 0);

        CComponent acom = cobj.GetCom("AttrCom");

        attrCom = acom as AttrCom;
        attrCom.SetAttr((int)Const_Util.UNIT_ATTR.MOVE_BASE_SPEED, 0, baseMoveSpeed);
        attrCom.SetAttr((int)Const_Util.UNIT_ATTR.MOVE_CUR_SPEED, 0, speed);

        unitHangNode = cobj.mGameObj.transform;//.parent;
        float   unitTypeTemp  = 0;
        Vector3 unitTypeUnUse = Vector3.zero;

        attrCom.GetAttr((int)Const_Util.UNIT_ATTR.UNIT_TYPE, out unitTypeTemp, out unitTypeUnUse);
        unitType = Mathf.RoundToInt(unitTypeTemp);

        moveRenderTr = cobj.GetRenderObjTr();
        if (unitType != (int)Const_Util.UNIT_TYPE.AI)
        {
            if (unitType == (int)Const_Util.UNIT_TYPE.ROLE_HERO)
            {
                moveTr = Camera.main.transform;
            }
            else
            {
                moveTr = cobj.GetRenderObjTr();
            }
            SetMoveSpeed(Vector3.zero);

            TriggerMoveChg(MoveType.ACC, baseMoveSpeed, TestConfig.HeroMoveAccTime);

            RegBroadcastEvent((int)Const_Util.BATTLE_EVENT.CHG_DIR);
            RegBroadcastEvent((int)Const_Util.BATTLE_EVENT.JUMP);
            RegMsg((int)Const_Util.UNIT_MSG.GAS_ACC);
            RegMsg((int)Const_Util.UNIT_MSG.SKILL_DESC);
        }
        else
        {
            moveTr = cobj.GetRenderObjTr();
            SetMoveSpeed(baseMoveSpeed);
            moveType = MoveType.AVG;
        }

        hangNodeOriginPos = unitHangNode.localPosition;
        RegMsg((int)Const_Util.UNIT_MSG.COLLIDER_OCCUR);
        RegBroadcastEvent((int)Const_Util.BATTLE_EVENT.MOVE_SPEED_RATE);
    }
 public override void Release()
 {
     attrCom = null;
 }
Exemplo n.º 5
0
    BattleUnit SpawnOneUnit(int playerIdx, int carResID, string resPath, Transform hangNode, Vector2 pos, Vector2 speed, int unitType)
    {
        int        objID = 0;
        GameObject obj   = ResMgr.instance.CreateObject(resPath, out objID);

        if (obj == null)
        {
            Debug.LogError("ObjMgr SpawnOneUnit obj == null resPath:" + resPath);
        }
        BattleUnit unitObj = new BattleUnit(playerIdx, objID, resPath, obj, hangNode, pos, speed, unitType);
        // attr com
        AttrCom attrCom = unitObj.GetRenderObjTr().GetComponent <AttrCom>();

        if (attrCom == null)
        {
            attrCom = unitObj.GetRenderObjTr().gameObject.AddComponent <AttrCom>();
        }
        unitObj.AddCom(attrCom);
        attrCom.InitAttr(carResID, unitType);

        // move com
        MoveCom move = unitObj.GetRenderObjTr().GetComponent <MoveCom>();

        if (move == null)
        {
            move = unitObj.GetRenderObjTr().gameObject.AddComponent <MoveCom>();
        }
        unitObj.AddCom(move);
        move.Init(speed);

        // collider com
        ColliderCom collider = unitObj.GetRenderObjTr().GetComponent <ColliderCom>();

        if (collider == null)
        {
            collider = unitObj.GetRenderObjTr().gameObject.AddComponent <ColliderCom>();
        }
        unitObj.AddCom(collider);

        // Scale com
        ScaleCom scaleCom = unitObj.GetRenderObjTr().GetComponent <ScaleCom>();

        if (scaleCom == null)
        {
            scaleCom = unitObj.GetRenderObjTr().gameObject.AddComponent <ScaleCom>();
        }
        unitObj.AddCom(scaleCom);

        // NitrogenCom
        NitrogenCom nitrogenCom = unitObj.GetRenderObjTr().GetComponent <NitrogenCom>();

        if (nitrogenCom == null)
        {
            nitrogenCom = unitObj.GetRenderObjTr().gameObject.AddComponent <NitrogenCom>();
        }
        unitObj.AddCom(nitrogenCom);


        SkillCom skillCom = unitObj.GetRenderObjTr().GetComponent <SkillCom>();

        if (skillCom == null)
        {
            skillCom = unitObj.GetRenderObjTr().gameObject.AddComponent <SkillCom>();
        }
        unitObj.AddCom(skillCom);


        StatusCom statusCom = unitObj.GetRenderObjTr().GetComponent <StatusCom>();

        if (statusCom == null)
        {
            statusCom = unitObj.GetRenderObjTr().gameObject.AddComponent <StatusCom>();
        }
        unitObj.AddCom(statusCom);

        return(unitObj);
    }