private Transform MainEnemy;//射中的敌人 /// <summary> /// 大范围爆炸 /// </summary> //修改Physics2D.Raycast void ExplosionHitEffect() { Collider2D[] colliders = Physics2D.OverlapCircleAll(new Vector2(transform.position.x, transform.position.y), ExplosionRadius, layer);//Physics.OverlapSphere():球形范围内的碰撞器 for (int i = 0; i < colliders.Length; i++) { EnemyContral hitEnemyContral = null; switch (colliders[i].transform.gameObject.layer) { //敌人护盾 case 18: hitEnemyContral = hitPoint[i].transform.GetComponent <ShieldProtect>().GetEnemyControl(); break; //敌人内部 case 11: hitEnemyContral = hitPoint[i].transform.GetComponent <EnemyContral>(); break; //紫水晶与零件箱 case 19: case 20: hitPoint[i].transform.GetComponent <HitCheckBase>().Broken(); break; } if (hitEnemyContral != null) { hitEnemyContral.GetDamage(Convert.ToInt32(ExplosionDemage), Convert.ToInt32(ExplosionDemage)); //硬直 hitEnemyContral.SetDelay(2, 4); //击退 hitEnemyContral.SetKnockback(transform.position, 0.5f, 4); } } }
void OnTriggerExit2D(Collider2D c2d) { #region 敌人 EnemyContral EC = c2d.GetComponent <EnemyContral>(); if (EC != null) { EC.GetBackToYourPosition(); } #endregion }
public void SetEnable(bool enable) { SR.enabled = enable; BC2D.enabled = enable; isEnable = enable; if (enable == false) { EC = null; target = null; } print("啊啊啊啊" + enable); //2018.6.13 ZMK添加 //修改武器collider状态 WeaponManager.Instance.ChangeWeaponManegerCollider(!enable); }
private Transform MainEnemy;//射中的敌人 /// <summary> /// 大范围爆炸 /// </summary> //修改Physics2D.Raycast void ExplosionHitEffect() { EnemyIDList.Clear(); Collider2D[] colliders = Physics2D.OverlapCircleAll(new Vector2(transform.position.x, transform.position.y), ExplosionRadius, layer);//Physics.OverlapSphere():球形范围内的碰撞器 for (int i = 0; i < colliders.Length; i++) { EnemyContral hitEnemyContral = null; switch (colliders[i].transform.gameObject.layer) { //敌人护盾 case 18: if (EnemyIDList.Contains(colliders[i].transform.GetComponent <ShieldProtect>().ProtectAimGameObject.GetInstanceID())) { continue; } hitEnemyContral = colliders[i].transform.GetComponent <ShieldProtect>().GetEnemyControl(); EnemyIDList.Add(colliders[i].transform.GetComponent <ShieldProtect>().ProtectAimGameObject.GetInstanceID()); break; //敌人内部 case 11: if (EnemyIDList.Contains(colliders[i].transform.GetInstanceID())) { continue; } hitEnemyContral = colliders[i].transform.GetComponent <EnemyContral>(); EnemyIDList.Add(colliders[i].transform.GetInstanceID()); break; //紫水晶与零件箱 case 19: case 20: colliders[i].transform.GetComponent <HitCheckBase>().Broken(); break; } if (hitEnemyContral != null) { hitEnemyContral.GetDamage(Convert.ToInt32(ExplosionDemage), Convert.ToInt32(ExplosionDemage)); //硬直 hitEnemyContral.SetDelay(2, (int)HardStraight); //击退 hitEnemyContral.SetKnockback(transform.position, 0.5f, (int)BeatBack); } } }
void Start() { m_CircleCollider2D = GetComponent <CircleCollider2D>(); switch (m_ProtectAimShieldType) { //玩家护盾 case ShieldType.Player: m_PlayerRobotContral = ProtectAimGameObject.GetComponent <PlayerRobotContral>(); break; //敌人护盾 case ShieldType.Enemy: m_EnemyRobotContral = ProtectAimGameObject.GetComponent <EnemyContral>(); break; } transform.parent = null; }
void OnTriggerEnter2D(Collider2D c2d) { //敌人 if (c2d.gameObject.layer == 11) { target = c2d.gameObject; EC = target.GetComponent <EnemyContral>(); EC.Contral = false; isRetern = true; BC2D.enabled = false; } //地形 else if (c2d.gameObject.layer == 12) { target = c2d.gameObject; isRetern = true; BC2D.enabled = false; } }
/// <summary> /// 敌人伤害 /// </summary> private void EnemyDamage(Collider2D[] AllCollider2D, int DamageNums) { for (int i = 0; i < AllCollider2D.Length; i++) { EnemyContral hitEnemyContral = null; switch (AllCollider2D[i].transform.gameObject.layer) { //敌人护盾 case 18: hitEnemyContral = AllCollider2D[i].transform.GetComponent <ShieldProtect>().GetEnemyControl(); break; //敌人内部 case 11: hitEnemyContral = AllCollider2D[i].transform.GetComponent <EnemyContral>(); break; //紫水晶与零件箱 case 19: case 20: AllCollider2D[i].transform.GetComponent <HitCheckBase>().Broken(); break; } if (hitEnemyContral != null) { hitEnemyContral.GetDamage(DamageNums, DamageNums); //硬直 hitEnemyContral.SetDelay(2, 4); //击退 hitEnemyContral.SetKnockback(transform.position, 0.5f, 4); } } var shakePreset = ProCamera2DShake.Instance.ShakePresets[2]; ProCamera2DShake.Instance.Shake(shakePreset); }
// Use this for initialization void Start() { EC = transform.parent.GetComponent <EnemyContral>(); PRC = FindObjectOfType <PlayerRobotContral>(); SR = GetComponent <SpriteRenderer>(); }
/// <summary> /// 普通攻击 碰撞后产生伤害 /// 打在护盾上或者是人物身上 /// </summary> protected virtual void GenerateDemage() { //伤害取整 int Damage = Convert.ToInt32(DemageNums); for (int i = 0; i < hitPoint.Length; i++) { EnemyContral hitEnemyContral = null; switch (hitPoint[i].transform.gameObject.layer) { //击中玩家护盾 case 17: //对玩家进行伤害(应该是扣mp) hitPoint[i].transform.GetComponent <ShieldProtect>().GetPlayerControl().GetDamage(Damage, Damage); break; //击中玩家内部 case 10: //对玩家进行伤害(应该是扣hp) print(hitPoint[i].transform.name); hitPoint[i].transform.GetComponent <PlayerRobotContral>().GetRealDamage(Damage); break; //击中敌人护盾 case 18: //对敌人进行伤害(应该是扣mp) hitEnemyContral = hitPoint[i].transform.GetComponent <ShieldProtect>().GetEnemyControl(); hitEnemyContral.GetDamage(Damage, Damage); break; //击中敌人内部 case 11: //对敌人进行伤害(应该是扣hp) hitEnemyContral = hitPoint[i].transform.GetComponent <EnemyContral>(); hitEnemyContral.GetRealDamage(Damage); break; //紫水晶与零件箱 case 19: case 20: hitPoint[i].transform.GetComponent <HitCheckBase>().Broken(); break; } //设置硬直击退 if (hitEnemyContral != null) { hitEnemyContral.SetDelay(0.5f, (int)HardStraight); hitEnemyContral.SetKnockback(transform.position, 0.5f, (int)BeatBack); } //----------------------------------------------------------------------------------------------------------------- //核心攻击 AOE + 特殊效果 //当前是否核心攻击 && 是否打中敌人护盾/敌人内部 if (isCoreAttack && hitEnemyContral != null) { //不同的核心产生不同的效果 switch (m_CurrentCoreAttribute) { case CoreAttribute.Initial: break; case CoreAttribute.Fire: //燃烧效果,敌人持续减血 hitEnemyContral.ER.AddAbnormalState(new AbnormalState_Burn(hitEnemyContral.ER, 3)); break; case CoreAttribute.Amethyst: //todo 无视MP,修改紫水晶子弹检测layer,不添加敌人护盾检测,直接打在敌人身上 break; case CoreAttribute.Frozen: //冰冻效果,敌人持续减速 hitEnemyContral.ER.AddAbnormalState(new AbnormalState_Frozen(hitEnemyContral.ER, 3)); break; } } } }