private void FixedUpdate() { if (!_movementLock.CanDoAction()) { RaiseOnStopMoving(); return; } float xComponent = _moveDirection.normalized.x * speed; float zComponent = _moveDirection.normalized.z * speed; float yComponent = Mathf.Clamp(_rb.velocity.y - 9.8f * Time.fixedDeltaTime, -53, 0); Vector3 movementDirection = new Vector3(xComponent, yComponent, zComponent); Vector3 horizontalMovement = new Vector3(movementDirection.x, 0f, movementDirection.z); _rb.velocity = movementDirection; _rb.MoveRotation(Quaternion.LookRotation(horizontalMovement.magnitude > 0 ? horizontalMovement : transform.forward)); if (new Vector3(_rb.velocity.x, 0f, _rb.velocity.z).magnitude >= 0.01f) { RaiseOnStartMoving(); } else { RaiseOnStopMoving(); } }
private void OnBlockedHitReceived(Attack attack, CombatSystem attackerCombatSystem, Vector3 contactPoint) { if (!_knockbackLock.CanDoAction()) { return; } if (attack.GetData().DealKnockbackWhenBlocked) { StartKnockback(attack, attackerCombatSystem); } }
private void TryAbility(GroupAbilityFactory groupAbilityFactory) { if (!_abilitiesLock.CanDoAction()) { return; } if (GroupsInRangeDetector.MostRepresentedGroupInRange == GroupManager.Group.None || GroupsInRangeDetector.MostRepresentedGroupInRange == GroupManager.Group.All) { return; } GroupAbility ability = groupAbilityFactory.GetAbility(); if (!_impMana.CheckSegments(ability.GetData().ManaSegmentsCost)) { return; } //Debug.Log("Segments OK"); if (!GroupsManager.Instance.Groups[GroupsInRangeDetector.MostRepresentedGroupInRange] .GetComponent <ImpGroupAi>().TryAbility(ability)) { return; } //Debug.Log("Ability OK"); _impMana.SpendSegments(ability.GetData().ManaSegmentsCost); OnAggroActionDone?.Invoke(useAbilityAggro); }
private void AssignOrder(TacticFactory tactic) { if (!_orderAssignLock.CanDoAction()) { return; } if (GroupsInRangeDetector.MostRepresentedGroupInRange == GroupManager.Group.None || GroupsInRangeDetector.MostRepresentedGroupInRange == GroupManager.Group.All) { return; } OnAggroActionDone?.Invoke(singleTacticAggro); OnTryTacticAssign?.Invoke(tactic, GroupsInRangeDetector.MostRepresentedGroupInRange); }
private void OnTriggerEnter(Collider other) { if (!_hitboxLock.CanDoAction()) { return; } if (other.gameObject.layer != LayerMask.NameToLayer("AttackColliders")) { return; } AttackCollider attackerAttackCollider = other.GetComponent <AttackCollider>(); if (attackerAttackCollider == null) { return; } if (attackerAttackCollider.OwnerCombatSystem.transform.root == transform.root) { return; } OnHitboxColliderHit?.Invoke(attackerAttackCollider.CurrentId, attackerAttackCollider.CurrentAttack, attackerAttackCollider.OwnerCombatSystem, _collider.ClosestPoint(other.transform.position)); }
private void OnDashInputDown() { if (!_dashLock.CanDoAction()) { return; } StartDash(); }
private void OnManaPoolChanged(float currentManaPool) { if (!_particlesLock.CanDoAction()) { return; } if (ImpMana.CurrentChargedSegments > 0) { if (_particlesActivated) { return; } _particlesActivated = true; foreach (ParticleSystem system in _particleSystems) { system.Play(); } _audioSource.Play(); } else { if (!_particlesActivated) { return; } _particlesActivated = false; foreach (ParticleSystem system in _particleSystems) { system.Stop(); } _audioSource.Stop(); } }
private void Update() { if (!_inputLock.CanDoAction()) { return; } ProcessMovementInput(); ProcessRotationInput(); if (Input.GetButtonDown("XBoxY")) { OnYButtonDown?.Invoke(); } if (Input.GetButtonDown("XBoxX")) { OnXButtonDown?.Invoke(); } if (Input.GetButtonDown("XBoxB")) { OnBButtonDown?.Invoke(); } if (Input.GetButtonDown("XBoxA")) { OnAButtonDown?.Invoke(); } if (Input.GetButtonUp("XBoxY")) { OnYButtonUp?.Invoke(); } if (Input.GetButtonUp("XBoxX")) { OnXButtonUp?.Invoke(); } if (Input.GetButtonUp("XBoxB")) { OnBButtonUp?.Invoke(); } if (Input.GetButtonUp("XBoxA")) { OnAButtonUp?.Invoke(); } if (Input.GetAxisRaw("XBoxLT") <= 0.1f && _ltPressed) { _ltPressed = false; OnLTButtonUp?.Invoke(); } if (Input.GetAxisRaw("XBoxLT") >= 0.9f && !_ltPressed) { _ltPressed = true; OnLTButtonDown?.Invoke(); } if (Input.GetButtonDown("XBoxRb")) { OnDashInputDown?.Invoke(); } if (Input.GetButtonDown("XBoxLb")) { OnCallToArmsInputDown?.Invoke(); } if (Input.GetButtonUp("XBoxLb")) { OnCallToArmsInputUp?.Invoke(); } // TODO non funge per ora if (Input.GetAxisRaw("XBoxLT") >= 0.9f && _ltPressed) { OnLTButtonHeldDown?.Invoke(); if (Input.GetButtonDown("XBoxY")) { OnLT_YButtonDown?.Invoke(); } if (Input.GetButtonDown("XBoxX")) { OnLT_XButtonDown?.Invoke(); } if (Input.GetButtonDown("XBoxB")) { OnLT_BButtonDown?.Invoke(); } if (Input.GetButtonDown("XBoxA")) { OnLT_AButtonDown?.Invoke(); } } }