Esempio n. 1
0
    public void initData(Transform pCameraTransform, Transform pRoleTranform, Vector3 pPos, Canvas pCanvas)
    {
        App.Game.character = this;
        mainRoleState      = new RoleStateMgr();
        mainRoleState.initData(roleInstance);
        mainRoleState.setJumpTime(csJumpUpTime * 2);

        jumpCheck = roleInstance.transform.GetComponent <jumpColider>();
        jumpCheck.jumpDownOver = jumpDownOver;
        jumpCheck.isUse        = false;

        rolePosCamer = new RolePosAndCamerMgr();
        rolePosCamer.initData(roleInstance, pCameraTransform, pRoleTranform, pPos, pCanvas);

        mainPro = roleInstance.transform.GetComponent <roleProperty>();
        mainPro.InitData(pCameraTransform, pCanvas.transform);

        //计算跳跃的加速度
        //s=0.5*a*t*t  a= s/0.5/t/t
        jumpA = csJumpHeightMax / 0.5f / csJumpUpTime / csJumpUpTime;

        updateGravity();
        // setJumpDownRigidBody();
        // test();
        //testGrav();
        sceneAlpha    = null;
        attackMonster = null;

        isStart = true;

        roleIsAttack = false;
        roleIsEscape = false;
        roleIsDie    = false;
    }
Esempio n. 2
0
    public override void stateAttackEnd()
    {
        if (selPro == null)
        {
            roleProperty selPro = this.transform.GetComponent <roleProperty>();
        }

        if (enemyObj != null)
        {
            roleProperty enemyPro = enemyObj.transform.GetComponent <roleProperty>();
            int          Hp       = RoleDamageCal.instance.DamageCal(selPro, enemyPro);

            enemyPro.SubHpValue(Hp); //UI扣血显示
            if (enemyPro.hp <= 0)    //敌人死亡
            {
                baseAI enemyAI = enemyObj.transform.GetComponent <baseAI>();
                enemyAI.stateDieStart();
                //this.enemyObj = null;

                getNowNewEnemyFromLst();  //死亡,挑选新的敌人
            }

            if (enemyObj != null)
            {
                lookAtEnemy(this.gameObject, enemyObj);
            }
        }
        stateStandEnd();
    }
Esempio n. 3
0
    private void addMonster(Vector3 pPos, bool isMonster)
    {
        if (isMonster == false)
        {
            pPos.x += 0.2f;
            pPos.z += 0.2f;
        }

        GameObject tmpMonster = Instantiate(monsterPrefab, pPos, Quaternion.identity, monsterManagerTrans);

        tmpMonster.name = "monster_" + monsterID.ToString();
        monsterID++;

        roleProperty tmpPro = tmpMonster.GetComponent <roleProperty>();


        if (isMonster)
        {
            tmpPro.InitData(camerTransform, canvasTransform, 0);
            CapsuleCollider tmpColl = tmpMonster.GetComponent <CapsuleCollider>();
            //tmpColl.isTrigger = true;
            tmpMonster.AddComponent <monsterNormalAI>();
        }
        else
        {
            tmpPro.InitData(camerTransform, canvasTransform, 1);
            followRole tmpFollow = tmpMonster.AddComponent <followRole>();
            //tmpFollow.mainObj = friendRole;
            friendRole = tmpMonster;
        }

        //go.GetComponent<MeshRenderer>().material = material;
        //go.name = roomName + nameIndex.ToString() + "_" + placeIndex.ToString();
    }
Esempio n. 4
0
    void Start()
    {
        animator   = GetComponent <Animator>();
        mainLayer  = animator.GetLayerIndex(csMainAniLayer);
        mAlphaMai  = new Material(Shader.Find("Unity Shaders Book/Chapter 7/NormalMapWorldAlpha"));
        isInAttack = false;

        mMonsterPro = this.gameObject.transform.GetComponent <roleProperty>();
    }
Esempio n. 5
0
    // Start is called before the first frame update
    void Start()
    {
        addRolePro(roleTransform.gameObject);

        roleProperty tmpPro = roleTransform.GetComponent <roleProperty>();

        tmpPro.InitData(CamerTransform, CanvasTransform);

        tmpPro.showUI();
    }
Esempio n. 6
0
    private void OnCollisionEnter(Collision collision)
    //    void OnTriggerStay(Collider other)
    // private void OnTriggerEnter(Collider other) //需区分碰撞的对象,限制为敌人才有反应
    {
        if (collision == null)
        {
            return;
        }

        // if (charInstance == null)
        // {
        //     charInstance = App.Game.character;
        // }
        if ((selfAI == null) || (selfProperty == null))
        {
            return;
        }

        ////以上为容错及过滤其它碰撞///////////
        if (collision.collider.tag == csTagRole) //碰到角色
        {
            roleProperty colPro = collision.gameObject.GetComponent <roleProperty>();
            if ((colPro.roleSort != selfProperty.roleSort) &&
                (colPro.hp > 0) &&
                (selfProperty.hp > 0)
                )                                             //是敌人,且双方存活
            {
                selfProperty.showUI();                        //显示自己的UI即可
                if (selfAI.enemyObj == null)                  //当前为空,马上攻击敌人
                {
                    selfAI.setEnemyObj(collision.gameObject); //设置朝向及攻击目标是相互的
                    selfAI.addEnemyToLst(collision.gameObject);
                    selfAI.lookAtEnemy(selfAI.gameObject, selfAI.enemyObj);
                }
                else                       //
                {
                    selfAI.addEnemyToLst(collision.gameObject);
                }
            }
        }

        /*
         * if (monControl.IsDie() == false)
         * {
         *
         *  //判断目标是否存活
         *  //双方的enemy加上对方, 双方显示血条
         *
         *  if (monControl.IsInAttackState() == false)
         *  {
         *      monControl.setToAttack(charInstance.roleInstance.transform.position);
         *  }
         *
         * }*/
    }
Esempio n. 7
0
    //计算伤害
    public int DamageCal(roleProperty AttPro, roleProperty DefPro)
    {
        int damage = 1;

        if (AttPro.attack > 0)
        {
            damage = AttPro.attack;
        }

        return(damage);
    }
Esempio n. 8
0
    private void addRolePro(GameObject obj)
    {
        roleProperty pro = obj.AddComponent <roleProperty>();

        pro.roleSort  = 0;
        pro.hpMax     = 100;
        pro.hp        = pro.hpMax;
        pro.attack    = 1;
        pro.level     = 1;
        pro.speed     = 0.5f;
        pro.HpUIPoint = getHpPoint(obj.transform);
    }
Esempio n. 9
0
    private void addMonster(Vector3 pPos, bool isMonster)
    {
        if (isMonster == false)
        {
            pPos.x += 0.2f;
            pPos.z += 0.2f;
        }
        int    roleID = LevMonsterTab.getRandomMonsterID();
        string strPre = RoleInfoTable.GetPrefab(roleID);
        Object tmpPre = Resources.Load("Prefab/Model/" + strPre);

        if (tmpPre == null)
        {
            Debug.LogError("role prefab not find roleID:" + roleID.ToString());
        }


        GameObject tmpMonster = GameObject.Instantiate(tmpPre, pPos, Quaternion.identity, monsterManagerTrans) as GameObject;

        tmpMonster.name = "monster_" + monsterID.ToString();
        monsterID++;

        GameObjCommon.skinUpdate(roleID, tmpMonster.transform);
        setMonsterTagLayer(tmpMonster);
        addRigidbody(tmpMonster);
        //addMonsterColliderCode(tmpMonster);
        //addAniControl(tmpMonster);
        tmpMonster.AddComponent <monsterCollider>();
        tmpMonster.AddComponent <modelAnimatorControl>();

        roleProperty tmpPro = addRolePro(tmpMonster, roleID);

        if (isMonster)
        {
            tmpPro.InitData(camerTransform, canvasTransform, 0);
            CapsuleCollider tmpColl = tmpMonster.GetComponent <CapsuleCollider>();
            //tmpColl.isTrigger = true;
            tmpMonster.AddComponent <monsterNormalAI>();
        }

        /*
         * else
         * {
         *  tmpPro.InitData(camerTransform, canvasTransform, 1);
         *  followRole tmpFollow = tmpMonster.AddComponent<followRole>();
         *  //tmpFollow.mainObj = friendRole;
         *  friendRole = tmpMonster;
         * }
         */
        //go.GetComponent<MeshRenderer>().material = material;
        //go.name = roomName + nameIndex.ToString() + "_" + placeIndex.ToString();
    }
Esempio n. 10
0
    public void initData(GameObject paraObj)
    {
        if (animator == null)
        {
            animator = GetComponent <Animator>();
            //mainLayer = animator.GetLayerIndex(csMainAniLayer);
            mainLayer  = 0;
            mAlphaMai  = new Material(Shader.Find("Unity Shaders Book/Chapter 7/NormalMapWorldAlpha"));
            isInAttack = false;

            mMonsterPro = this.transform.GetComponent <roleProperty>();
        }
    }
Esempio n. 11
0
    private void addMonster(Vector3 pPos)
    {
        GameObject go = Instantiate(monsterPrefab, pPos, Quaternion.identity, monsterManagerTrans);

        go.name = "monster_" + monsterID.ToString();
        monsterID++;

        roleProperty tmpPro = go.GetComponent <roleProperty>();

        tmpPro.InitData(camerTransform, canvasTransform);

        //go.GetComponent<MeshRenderer>().material = material;
        //go.name = roomName + nameIndex.ToString() + "_" + placeIndex.ToString();
    }
Esempio n. 12
0
    public bool selfIsLive()
    {
        bool res = true;

        if (selPro == null)
        {
            selPro = this.transform.GetComponent <roleProperty>();
        }

        if (selPro.hp <= 0)
        {
            res = false;
        }

        return(res);
    }
Esempio n. 13
0
        //计算伤害
        public int DamageCal(roleProperty AttPro, roleProperty DefPro)
        {
            int   damage    = 1;
            float tmpAttack = AttPro.attack - DefPro.def;

            if (tmpAttack < 1.0f)
            {
                tmpAttack = 1.0f;
            }
            float tmpRes = attribRestraint(AttPro.element, DefPro.element);
            float res    = tmpAttack * tmpRes;

            damage = Mathf.FloorToInt(res); //向下取整

            return(damage);
        }
Esempio n. 14
0
    /*
     * private GameObject getHpPoint(Transform parent)
     * {
     *  GameObject res = parent.gameObject;
     *  int nCount = parent.childCount;
     *  for (int i = 0; i < nCount; i++)
     *  {
     *      Transform tmp = parent.GetChild(i);
     *      if (tmp.name == "HpPoint")
     *      {
     *          res = tmp.gameObject;
     *          break;
     *      }
     *  }
     *
     *  return res;
     * }
     */
    private void addRoleProperty(GameObject obj, int roleID)
    {
        roleProperty pro = obj.AddComponent <roleProperty>();

        RoleProTable.rolePro tmpPro = RoleProTable.GetFromRoleID(roleID);
        pro.roleSort = 1;
        pro.hpMax    = tmpPro.MaxHp;
        pro.hp       = gameDataMgr.gameData().m_roleData.bosshp[roleID];
        pro.attack   = tmpPro.Atk;
        pro.def      = tmpPro.Def;
        pro.element  = tmpPro.Ele;
        pro.roleID   = roleID;
        pro.level    = 1;
        pro.speed    = 0.5f;
        //  pro.turnTime = 0.0f;
        pro.HpUIPoint = GameObjCommon.getObjNode(obj.transform, "HpPoint");
    }
Esempio n. 15
0
    //怪物属性
    private roleProperty addRolePro(GameObject obj, int roleID)
    {
        roleProperty pro = obj.AddComponent <roleProperty>();

        RoleProTable.rolePro tmpPro = RoleProTable.GetFromRoleID(roleID);
        pro.roleSort  = 0;
        pro.hpMax     = tmpPro.MaxHp;
        pro.hp        = pro.hpMax;
        pro.attack    = tmpPro.Atk;
        pro.def       = tmpPro.Def;
        pro.element   = tmpPro.Ele;
        pro.roleID    = roleID;
        pro.level     = 1;
        pro.speed     = 0.5f;
        pro.HpUIPoint = GameObjCommon.getObjNode(obj.transform, "HpPoint");

        return(pro);
    }
Esempio n. 16
0
    //玩家受到攻击
    public void roleSubHp(roleProperty attackPro)
    {
        int damage = roleDamageManager.DamageCal(attackPro, mainPro);

        mainPro.SubHpValue(damage);

        if (mainPro.hp == 0)   //玩家死亡
        {
            roleIsDie = true;

            //怪物停止攻击, 怪物血条保持显示,玩家血条保持显示
            monsterAniControl attackControl = attackPro.gameObject.transform.GetComponent <monsterAniControl>();
            attackControl.setStopAttack();

            //玩家播放倒地动画
            mainRoleState.playRoleDie();
        }
    }
Esempio n. 17
0
    //攻击->攻击(触发制,动作完成判断):双方相互攻击
    //攻击->待机(触发制,动作完成判断)
    public override void stateAttackEnd()
    {
        if (selPro == null)
        {
            roleProperty selPro = this.transform.GetComponent <roleProperty>();
        }

        if (enemyObj != null)
        {
            roleProperty enemyPro = enemyObj.transform.GetComponent <roleProperty>();
            int          Hp       = RoleDamageCal.instance.DamageCal(selPro, enemyPro);

            enemyPro.SubHpValue(Hp); //UI扣血显示
            if (enemyPro.hp <= 0)    //死亡
            {
                baseAI enemyAI = enemyObj.transform.GetComponent <baseAI>();
                enemyAI.stateDieStart(); //处理 对方死亡动画及结算
                this.enemyObj = null;
            }

            // getNowNewEnemyFromLst();
            if (enemyObj != null)
            {
                lookAtEnemy(this.gameObject, enemyObj);
            }
        }

        startSkillCD();

        /*
         * IbaseANI tmpAni = this.transform.GetComponent<monsterAniControl>();
         *
         * bool isAttack = tmpAni.attackStateEnd(); //伤害计算及UI显示,以及是否死亡的结算
         *
         * if (isAttack)
         * {
         *  tmpAni.PlayState(roleState.attack);
         * }
         * else
         * {
         *  tmpAni.PlayState(roleState.stand);
         * }*/
    }
Esempio n. 18
0
    // Update is called once per frame
    private void OnCollisionEnter(Collision collision)
    {
        if (collision == null)
        {
            return;
        }

        if ((selfAI == null) || (selfProperty == null))
        {
            return;
        }

        if (collision.collider.tag == csTagRole) //碰到角色
        {
            roleProperty colPro = collision.gameObject.GetComponent <roleProperty>();
            if ((colPro.roleSort != selfProperty.roleSort) &&
                (colPro.hp > 0) &&
                (selfProperty.hp > 0)
                ) //是敌人,且双方存活
            {
                selfProperty.showUI();
                if (selfAI.enemyObj == null)
                { //进入战斗
                    CsdUIControlMgr.uiMgr().msgNoteTop();
                    selfAI.setEnemyObj(collision.gameObject);
                    selfAI.addEnemyToLst(collision.gameObject);
                    //  selfAI.lookAtEnemy(selfAI.gameObject, selfAI.enemyObj);
                }
                else
                {
                    selfAI.addEnemyToLst(collision.gameObject);
                }
            }
        }
        else if (collision.collider.tag == csTagGold)
        {
            // Debug.LogWarning("colision gold");
            collision.transform.gameObject.SetActive(false);
            stageMgr.stage().addReward();
        }
    }
Esempio n. 19
0
    public void initData(Transform pCameraTransform,
                         Transform pRoleTranform,
                         Vector3 pPos,
                         Canvas pCanvas,
                         Transform pMapCamerTransform,
                         //Transform pRoleFlagTrans,
                         Transform pMonsterParent)
    {
        App.Game.character = this;
        //mainRoleState = new RoleStateMgr();
        //mainRoleState = roleInstance.transform.GetComponent<RoleStateMgr>();
        //mainRoleState.initData(roleInstance);
        monsterParent = pMonsterParent;

        mainRoleState = roleInstance.transform.GetComponent <roleAI>();
        mainRoleState.AIInitData(roleInstance);

        rolePosCamer = new RolePosAndCamerMgr();
        rolePosCamer.initData(roleInstance, pCameraTransform, pRoleTranform, pPos, pCanvas, pMapCamerTransform);

        mainPro = roleInstance.transform.GetComponent <roleProperty>();
        mainPro.InitData(pCameraTransform, pCanvas.transform, 1);

        //计算跳跃的加速度
        //s=0.5*a*t*t  a= s/0.5/t/t
        jumpA = csJumpHeightMax / 0.5f / csJumpUpTime / csJumpUpTime;

        updateGravity();
        // setJumpDownRigidBody();
        // test();
        //testGrav();
        sceneAlpha    = null;
        attackMonster = null;

        isStart = true;

        roleIsAttack = false;
        roleIsEscape = false;
        roleIsDie    = false;
        skillInit();
    }
Esempio n. 20
0
    //玩家攻击怪物
    public void monsterSubHp()
    {
        roleProperty monsterPro = attackMonster.transform.GetComponent <roleProperty>();
        int          damage     = roleDamageManager.DamageCal(mainPro, monsterPro);

        monsterPro.SubHpValue(damage);

        if (monsterPro.hp == 0)   //怪物死亡
        //怪物死亡动画在 monsterAniControl.cs中自行判断处理

        //玩家停止攻击
        {
            roleIsAttack = false;

            //玩家UI隐藏
            mainPro.hideUI();

            //玩家强制转为站立状态
            mainRoleState.playRoleStand();
        }
    }
Esempio n. 21
0
    public void onlyRoleDestory()
    {
        roleInstance = null;

        roleChangeColorWeaponMgr.dataDestory();
        roleChangeColorWeaponMgr = null;

        mainRoleState = null;
        //角色位置及Camer管理
        rolePosCamer = null;

        mainPro       = null;
        attackMonster = null; //被玩家攻击的怪物



        roleIsAttack = false; //玩家是否正在攻击中
        roleIsEscape = false; //玩家逃跑中
        roleIsDie    = false; //玩家死亡
        skillDestory();
    }
Esempio n. 22
0
    public void refreshTestUIShow()
    {
        roleProperty tmpPro = roleTransform.GetComponent <roleProperty>();

        tmpPro.testShowUI(pPos);
    }
Esempio n. 23
0
 void Start()
 {
     selfAI       = this.transform.GetComponent <baseAI>();
     selfProperty = this.transform.GetComponent <roleProperty>();
 }
Esempio n. 24
0
    private void hideRoleUI()
    {
        roleProperty mainPro = App.Game.character.roleInstance.transform.GetComponent <roleProperty>();

        mainPro.hideUI();
    }