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; }
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(); }
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(); }
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>(); }
// Start is called before the first frame update void Start() { addRolePro(roleTransform.gameObject); roleProperty tmpPro = roleTransform.GetComponent <roleProperty>(); tmpPro.InitData(CamerTransform, CanvasTransform); tmpPro.showUI(); }
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); * } * * }*/ }
//计算伤害 public int DamageCal(roleProperty AttPro, roleProperty DefPro) { int damage = 1; if (AttPro.attack > 0) { damage = AttPro.attack; } return(damage); }
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); }
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(); }
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>(); } }
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(); }
public bool selfIsLive() { bool res = true; if (selPro == null) { selPro = this.transform.GetComponent <roleProperty>(); } if (selPro.hp <= 0) { res = false; } return(res); }
//计算伤害 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); }
/* * 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"); }
//怪物属性 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); }
//玩家受到攻击 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(); } }
//攻击->攻击(触发制,动作完成判断):双方相互攻击 //攻击->待机(触发制,动作完成判断) 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); * }*/ }
// 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(); } }
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(); }
//玩家攻击怪物 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(); } }
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(); }
public void refreshTestUIShow() { roleProperty tmpPro = roleTransform.GetComponent <roleProperty>(); tmpPro.testShowUI(pPos); }
void Start() { selfAI = this.transform.GetComponent <baseAI>(); selfProperty = this.transform.GetComponent <roleProperty>(); }
private void hideRoleUI() { roleProperty mainPro = App.Game.character.roleInstance.transform.GetComponent <roleProperty>(); mainPro.hideUI(); }