public override void OnTriggerEnter2D(Collider2D collision) { base.OnTriggerEnter2D(collision); if (collision.CompareTag("Enemy")) { Debug.Log(photonView.Owner.ActorNumber); // ActorModel.Model.SetEngery(ActorModel.Model.GetCurrentWeapon().回复能量); if (photonView.Owner.ActorNumber == collision.GetComponent <NetkActorController>().photonView.Owner.ActorNumber) { return; } if (attack_type == HitType.击飞) { Camera.main.GetComponent <Cinemachine.CinemachineImpulseSource>().GenerateImpulse(); } bool isCrit = false; var weapon = WeaponConfig.Get(model.GetPlayerEquipment(EquipmentType.武器)); var hurt_value = model.GetPlayerAttribute(PlayerAttribute.攻击力); if (Random.value <= model.GetPlayerAttribute(PlayerAttribute.暴击率) * 0.01f) { isCrit = true; hurt_value = model.GetPlayerAttribute(PlayerAttribute.暴击伤害); } collision.GetComponent <NetkActorController>().GetHurt(new AttackData(hurt_value, isCrit, transform.position, this.attack_type)); } }
public override void GetHurt(AttackData attackData) { if (!photonView.IsMine) { photonView.RPC("RPCGetHurt", RpcTarget.Others, JsonMapper.ToJson(attackData)); } if (shieldEffect.activeSelf && (attackData.attack_pos - transform.position).normalized.x * transform.right.x > 0) { _rigi.ResetVelocity(); _rigi.AddForce(-transform.right * 20, ForceMode2D.Impulse); GameObjectPoolManager.GetPool("metal_hit").Get(transform.position + transform.right * 2, Quaternion.identity, 1.5f); return; } _anim.SetTrigger("hit"); GameStaticMethod.ChangeChildrenSpriteRendererColor(gameObject, Color.red); transform.rotation = attackData.attack_pos.x > transform.position.x ? Quaternion.identity : Quaternion.Euler(0, 180, 0); GameObjectPoolManager.GetPool("hit_effect").Get(transform.position + new Vector3(0, 2, 0), Quaternion.identity, 0.5f); _model.SetHealth(-DreamerTool.Util.DreamerUtil.GetHurtValue(attackData.hurt_value, _model.GetPlayerAttribute(PlayerAttribute.物防))); switch (attackData.attack_type) { case HitType.普通: break; case HitType.击退: if (!actor_state.isGround) { _rigi.ResetVelocity(); _rigi.ClearGravity(); } else { _rigi.ResetVelocity(); _rigi.AddForce(-transform.right * 20, ForceMode2D.Impulse); } break; case HitType.击飞: _rigi.ResetVelocity(); _rigi.AddForce(new Vector2(-transform.right.x * 0.5f, 0.5f).normalized * 50, ForceMode2D.Impulse); break; case HitType.挑: _rigi.ResetVelocity(); _rigi.AddForce(transform.up * 95, ForceMode2D.Impulse); break; default: break; } }
public void UpdateEnergy() { energy_text.text = (int)model.GetEngery() + "/" + model.GetPlayerAttribute(PlayerAttribute.能量值); energy_bar.fillAmount = (float)(model.GetEngery() / model.GetPlayerAttribute(PlayerAttribute.能量值)); }