private void OnTriggerEnter(Collider other) { // make projectiles go trough cinematic triggers and items on the ground if (other.gameObject.CompareTag(TAG_CINEMATIC) || other.gameObject.CompareTag(TAG_PICKUP)) { return; } foreach (GameObject toDestroy in destroyAfterHit) { toDestroy.SetActive(true); } var targetHealth = other.GetComponent <Health>(); if (targetHealth == null) { // to disallow friendly fire - || targetHealth != target ReturnToPool(); return; } if (targetHealth.IsDead) { StartCoroutine(ReturnToPoolWithDelay(projectileTTL)); return; } speed = 0; if (hitEffect != null) { Vector3 position = m_Transform.position; Vector3 closestPoint = !targetHealth.IsDead ? other.ClosestPoint(position) : m_Target.GetComponent <Collider>().ClosestPoint(position); GameObject impactObj = Instantiate(hitEffect); impactObj.transform.position = closestPoint; impactObj.transform.rotation = m_Transform.rotation; } if (targetHealth == m_Target) { m_Target.TakeDamage(m_Instigator, m_Damage); } else { targetHealth.TakeDamage(m_Instigator, m_Damage); } foreach (GameObject toDestroy in destroyAfterHit) { toDestroy.SetActive(false); } onHit?.Invoke(); m_UpdateUi?.Invoke(); StartCoroutine(ReturnToPoolWithDelay(afterHitTTL)); }
private Vector3 GetAimLocation() { CapsuleCollider targetCapsuleCollider = target.GetComponent <CapsuleCollider>(); if (targetCapsuleCollider == null) { return(target.transform.position); } return(target.transform.position + Vector3.up * targetCapsuleCollider.height / 2); }
public IEnumerator _BlockHitReact() { StopAllCoroutines(); StartCoroutine(_LockMovementAndAttack(0.5f)); target.GetComponent <Animator>().SetTrigger("BlockHitReactTrigger"); yield return(null); }
void Hit() { if (target) { target.GetComponent <Health>().TakeDamage(weaponDamage); } }
private Vector3 GetAimLocation() { var targetCapsule = _target.GetComponent <CapsuleCollider>(); var position = _target.transform.position; return(targetCapsule == null ? position : position + Vector3.up * targetCapsule.height / 2); }
public float CalculateDamage(GameObject instigator, Health target, Weapon weapon) { attackerStats = instigator.GetComponent <BaseStats>(); attackerLevel = attackerStats.GetLevel(); attackerCritChange = attackerStats.GetStat(Stat.CritPercentage); weaponDamage = weapon.WeaponDamage; weaponSpeed = weapon.WeaponSpeed; defenderStats = target.GetComponent <BaseStats>(); defenderLevel = defenderStats.GetLevel(); float hitChance = random.Next(1, 100); if (hitChance <= (hitEqualLevel + hitChangePrLevel * (attackerLevel - defenderLevel))) { if (weapon.IsMagicAttack) { return(CalculateMagicDamage()); } else { return(CalculateMeleeDamage()); } } else //miss { Debug.Log("Miss"); return(0f); } }
// Animation Event void Hit() { if (target == null) { return; } float damage = GetComponent <BaseStats>().GetStat(Stat.Damage); BaseStats targetBaseStats = target.GetComponent <BaseStats>(); if (targetBaseStats != null) { float defence = targetBaseStats.GetStat(Stat.Defence); damage /= 1 + defence / damage; } if (currentWeapon.value != null) { currentWeapon.value.OnHit(); } if (currentWeaponConfig.HasProjectile()) { currentWeaponConfig.LaunchProjectile(rightHandTransform, leftHandTransform, target, gameObject, damage); } else { target.TakeDamage(gameObject, damage); } }
// Private Methods private Vector3 GetPosition() { CapsuleCollider collider = target.GetComponent <CapsuleCollider>(); Vector3 offset = Vector3.up * collider.height * 0.66f; return(target.transform.position + offset); }
private Vector3 GetAimLocation() { CapsuleCollider targetCapsule = target.GetComponent <CapsuleCollider>(); return(null == targetCapsule ? target.transform.position : target.transform.position + Vector3.up * targetCapsule.height * 0.5f); }
private Vector3 GetAimLocation() { CapsuleCollider targetCapsule = target.GetComponent <CapsuleCollider>(); if (targetCapsule == null) { return(target.transform.position); } return(target.transform.position); // + Vector3.up * targetCapsule.height / 2; for very low target position }
private Vector3 GetAimLocation() { CapsuleCollider targetCapsule = target.GetComponent <CapsuleCollider>(); if (targetCapsule == null) { return(target.transform.position); } return(target.transform.position + (Vector3.up * ((targetCapsule.height * 5 / 8)))); }
private Vector3 GetAimPosition() { CapsuleCollider capsule = target.GetComponent <CapsuleCollider>(); if (capsule == null) { return(target.transform.position); } return(target.transform.position + Vector3.up * capsule.height / 2); }
private Vector3 GetAimLocation() // aims the arrow/projectile at the target's center mass { CapsuleCollider targetCapsule = target.GetComponent <CapsuleCollider>(); // sets the target to the capsule collider of the target if (targetCapsule == null) { return(target.transform.position); // location of the target } return(target.transform.position + Vector3.up * targetCapsule.height / 2); // center mass of the target }
private Vector3 GetAimLocation() { CapsuleCollider targetCapsule = target.GetComponent <CapsuleCollider>(); if (targetCapsule == null) { return(target.transform.position); // If target does not have capsule collider } return(target.transform.position + Vector3.up * targetCapsule.height / 2); }
private Vector3 GetAimLocation() { CapsuleCollider targetcapsule = _target.GetComponent <CapsuleCollider>(); if (targetcapsule == null) { return(_target.transform.position); } return(_target.transform.position + Vector3.up * targetcapsule.height / _aimHeight); }
private Vector3 GetAimLocation() { CapsuleCollider targetCapsule = target.GetComponent <CapsuleCollider>(); if (targetCapsule == null) { return(target.transform.position); } // return targets position + half ot the targets height return(target.transform.position + Vector3.up * targetCapsule.height / 2); }
private Vector3 GetAimLocation() { CapsuleCollider targetCapsule = target.GetComponent <CapsuleCollider>(); if (targetCapsule == null) { return(target.transform.position); } return(target.transform.position + Vector3.up * targetCapsule.height / 2); //TODO: I don't understand this formula? }
private Vector3 GetAimLocation() { CapsuleCollider targetCollider = _target.GetComponent <CapsuleCollider>(); if (targetCollider != null && targetCollider.enabled) { return(_target.transform.position + (Vector3.up * (targetCollider.height / 2))); } return(_target.transform.position); }
private Vector3 GetAimLocation() { // Arrow shoots at feet so this ensures arrow aims at middle of capsule collider CapsuleCollider targetCapsule = target.GetComponent <CapsuleCollider>(); if (targetCapsule == null) { return(target.transform.position); } return(target.transform.position + (Vector3.up * targetCapsule.height / 2)); }
private Vector3 GetAimLocation() { Vector3 aimLocation = target.transform.position; CapsuleCollider targetCapsule = target.GetComponent <CapsuleCollider>(); if (targetCapsule) { // Adjust the aim location to be at the target mid height aimLocation += Vector3.up * targetCapsule.height * 0.5f; } return(aimLocation); }
private Vector3 GetAimLocation() { CapsuleCollider targetCapsule = target.GetComponent <CapsuleCollider>(); if (targetCapsule == null) { return(target.transform.position); } // target.position 으로 target의 위치를 얻고 // + Vector3.up * targetCapsule.height / 2 로 상대의 타격객체의 몸통을 노린다. /2 보다 *0.5가 더 빠름. return(target.transform.position + Vector3.up * (targetCapsule.height * 0.5f)); }
Vector3 GetAimLocation() { CapsuleCollider cc = myTarget.GetComponent <CapsuleCollider>(); if (cc == null) { return(myTarget.transform.position); } // we have vector3.up so that the x and z values aren't affected // in this calculation since we are only interested in returning the new y value return(myTarget.transform.position + (Vector3.up * (cc.height / 2))); }
private void AttackBehaviour() { transform.LookAt(target.transform); if (timeSinceLastAttack > timeBetweenAttacks) { //trigger Hit() event TriggerAttack(); timeSinceLastAttack = 0; Health healthComponent = target.GetComponent <Health>(); float damage = GetComponent <BaseStats>().GetStat(Stat.Damage); healthComponent.TakeDamage(gameObject, damage); } }
public void OnHit(Health target) { onHit?.Invoke(); if (hitEffect == null) { return; } GameObject impactObj = Instantiate(hitEffect); impactObj.transform.position = target.GetComponent <Collider>().ClosestPoint(transform.position); impactObj.transform.rotation = transform.rotation; }
private Vector3 GetAimLocation() { Vector3 aimPosition = target.transform.position; var targetCapsule = target.GetComponent <CapsuleCollider>(); if (targetCapsule != null) { aimPosition += Vector3.up * targetCapsule.height / 2; } return(aimPosition); }
//Hedefin tam yükseklik merkezini işan noktası olarak döndüren fonksiyon private Vector3 GetAimLocation() { CapsuleCollider targetCapsule = target.GetComponent <CapsuleCollider>(); //eğer coolider yoksa if (targetCapsule == null) { return(target.transform.position); } //collider ın tam orta noktası hesaplandı return(target.transform.position + Vector3.up * targetCapsule.height / 2); }
/// <summary> /// Calculates the location where the projectile is going to on the target /// </summary> /// <returns></returns> private Vector3 GetAimLocation() { CapsuleCollider targetHitBox = m_Target.GetComponent <CapsuleCollider>(); //Protect against null if (targetHitBox == null) { return(m_Target.transform.position); } else { return(m_Target.transform.position + Vector3.up * (targetHitBox.height / 1.5f)); } }
//An animation event! triggered on range attacks void Shoot() { if (target == null || quiver == null || !quiver.CanUse()) { Cancel(); print("Shoot animation triggered but no arrow shot. Target: " + target); return; } var launchArrow = quiver.Use(); launchArrow.transform.position = leftHand.position; var bodyMass = target.GetComponent <CharacterBodyCenter>(); Vector3 targetPosition = bodyMass ? bodyMass.bodyCenter.transform.position : target.transform.position; launchArrow.Launch(targetPosition, currentWeapon.Damage + quiver.Damage, gameObject.tag); }
// Animation Event public void Hit() { if (target == null) { return; } if (currentWeapon.value.HasProjectile()) { currentWeapon.value.LaunchProjectile(rightHandTransform, leftHandTransform, target, gameObject, GetComponent <BaseStats>().GetStat(Stat.Dmg)); } else { target.GetComponent <Health>().TakeDamage(gameObject, GetComponent <BaseStats>().GetStat(Stat.Dmg)); } }
// Animation triggered events private void Hit() { if (opponent == null) { return; } if (currentSpell) { currentSpell.CastSpell(me, opponent, hands, baseStats.GetCasterLevel()); } else { Health enemyHealth = opponent.GetComponent <Health>(); DealDamage(enemyHealth); enemyHealth.GetComponent <Fighter>().LookAt(transform.position); } }