예제 #1
0
    private void AimToTarget(RangedTargetAttackComponent ranger)
    {
        // Aim and face
        Vector3 targetPosition = ranger.TargetTransform.position;

        ranger.Weapon.transform.LookTowards2D(targetPosition, 5);
        Vector3   facingDirection = targetPosition - ranger.transform.position;
        Transform spriteTransform = ranger.GetComponentInChildren <DeathComponent>().transform;
        Vector3   scale           = spriteTransform.localScale;

        scale.x = (facingDirection.x < 0 ? 1 : -1);
        spriteTransform.transform.localScale = scale;
    }
예제 #2
0
    private void ShootWhenReady(RangedTargetAttackComponent ranger)
    {
        if (!ranger.Weapon.ReadyToShootAgain)
        {
            return;
        }

        Transform           weaponSprite = ranger.Weapon.transform.GetChild(0);
        GameObject          arrow        = Instantiate(ranger.Weapon.Arrow, weaponSprite);
        ProjectileComponent projectile   = arrow.GetComponent <ProjectileComponent>();

        ranger.Weapon.IsShooting = true;

        DOTween.Sequence()
        .Append(arrow.transform.DOLocalMoveY(arrow.transform.localPosition.y - 0.5f, ranger.Weapon.PreShotDuration))
        .AppendCallback(() =>
        {
            arrow.transform.SetParent(null, true);
            projectile.IsShot          = true;
            ranger.Weapon.LastTimeShot = Time.time;
            ranger.Weapon.IsShooting   = false;
        });
    }