public override void Setup( IGameEntity attacker, CharacterItem weapon, Dictionary <DamageElement, MinMaxFloat> damageAmounts, BaseSkill skill, short skillLevel, float missileDistance, float missileSpeed, IDamageableEntity lockingTarget) { base.Setup(attacker, weapon, damageAmounts, skill, skillLevel, missileDistance, missileSpeed, lockingTarget); //Initial configuration inipos = this.transform.position; collided = false; //Configuration bullet and effects if (ProjectileObject) { ProjectileObject.SetActive(true); } if (ImpactEffect && !instantiateImpact) { ImpactEffect.SetActive(false); iniImpactEffectPos = ImpactEffect.transform.localPosition; } if (disappearEffect && !instantiateDisappear) { disappearEffect.SetActive(false); } //Movement Vector3 targetPos = inipos + (this.transform.forward * missileDistance); if (lockingTarget != null && lockingTarget.CurrentHp > 0) { targetPos = lockingTarget.GetTransform().position; } float dist = Vector3.Distance(inipos, targetPos); float yOffset = -transform.forward.y; if (recalculateSpeed) { missileSpeed = LaunchSpeed(dist, yOffset, Physics.gravity.magnitude, angle * Mathf.Deg2Rad); } if (useAngle) { this.transform.eulerAngles = new Vector3(-angle, this.transform.eulerAngles.y, this.transform.eulerAngles.z); } bulletVelocity = this.transform.forward * missileSpeed; }