public override void Attack(GuardAbs guardObj) { GoldCarrier gc = guardObj.gameObject.GetComponent <GoldCarrier>(); if (gc == null || gos.Contains(gc.gameObject)) { return; } gos.Add(gc.gameObject); UnityEventCenter.SendMessage <AudioEvent>(new AudioEvent(gameObject, clip_1)); if (guardObj.getGuardLevel() <= getAttackLevel()) { //等级相同,摧毁对方(只有超载矿车) if (guardObj.DestrotyGameObj(this)) { //成功摧毁对方 TryDestroy(this); } } else { //等级高于检查站,则扣钱 int gold = gc.popGold(); gc.setGoldAmounts(Mathf.FloorToInt(gold * tax)); } }
public override void OnSelfUnitCollisionStart(Collider selfUnit) { base.OnSelfUnitCollisionStart(selfUnit); if (selfUnit.gameObject.GetComponent <DestoryMe>() != null) { if (!selfUnit.gameObject.GetComponent <DestoryMe>().couldDestory) { selfUnit.gameObject.GetComponent <DestoryMe>().couldDestory = true; } else { GoldCarrier goldCarrier = selfUnit.GetComponent <GoldCarrier>(); if (goldCarrier != null) { MineMountain mineMountain = this.GetComponent <MineMountain>(); mineMountain.getMineFromCar(goldCarrier.popGold()); } selfUnit.gameObject.SendMessage(GameobjBase.TryDestroyFUNC, SendMessageOptions.DontRequireReceiver); //Destroy(selfUnit.gameObject); } } else { selfUnit.gameObject.AddComponent <DestoryMe>(); selfUnit.gameObject.GetComponent <DestoryMe>().couldDestory = true; } }
/// <summary> /// 平分双方金钱 /// </summary> /// <param name="enemyGold"></param> /// <param name="myGold"></param> void divideGoldEqually(GoldCarrier enemyGold, GoldCarrier myGold) { totalPirateGold += enemyGold.popGold(); totalPirateGold += myGold.popGold(); enemyGold.addGold(totalPirateGold / 2); myGold.addGold(totalPirateGold / 2); totalPirateGold = 0; }
public override void OnEnemyCollisionStart(Collider enemy) { MineMountain mineMountain = this.GetComponent <MineMountain>(); ExplorationTramcar explorationTramcar = enemy.GetComponent <ExplorationTramcar>(); base.OnEnemyCollisionStart(enemy); if (!(mineMountain.isSmallMine && explorationTramcar)) { GoldCarrier goldCarrier = enemy.GetComponent <GoldCarrier>(); if (goldCarrier != null) { mineMountain.getMineFromCar(goldCarrier.popGold()); } enemy.gameObject.SendMessage(GameobjBase.TryDestroyFUNC); //Destroy(enemy.gameObject); } }
/// <summary> /// 直接抢走别人的钱 /// </summary> /// <param name="goldCarrier"></param> void getEnemyGold(GoldCarrier goldCarrier) { myGoldCarrier.addGold(goldCarrier.popGold()); }
void OnTriggerEnter(Collider other) { //这里要处理所有玩家的单位,所以不去继承之前写的那个基类 GameobjBase gBase = other.GetComponent <GameobjBase>(); GoldCarrier carrier = other.GetComponent <GoldCarrier>(); if (gBase == null || carrier == null) { return; } UnityEventCenter.SendMessage <ScoreAddEvent>(new ScoreAddEvent(gameObject, gBase.getOwner(), carrier.popGold()));//发送分数增加事件 other.gameObject.SendMessage(GameobjBase.TryDestroyFUNC); //Destroy(other.gameObject); }