private void Update() { float moveDistance = Time.deltaTime * speed; distanceTraveled += Time.deltaTime * speed; float traveledPercent = distanceTraveled / distanceToTarget; if (traveledPercent >= 1) { Transform smokeTransform = SmokeEffectPool.Instance.GetObject().transform; IsometricLocomotion.SetPositionOnPlane(smokeTransform, transform.position); smokeTransform.localScale = Vector3.one * impactScale; //probably should calculate isometric ranges somewhere else if (splash) { SplashProcessor.Instance.SplashArea(transform.position, new Vector2(impactScale, impactScale * 2 / 3), damage); } else { target.TakeDamage(damage); } gameObject.SetActive(false); return; } locomotion.PlanarMovement(moveDirection * moveDistance, (trajectory - 2 * trajectory * traveledPercent) * Time.deltaTime); }
private void Shoot(EnemyDummy target) { ProjectileDummy dummy = ProjectilePool.Instance.GetObject(); dummy.Setup(projectile, gameObject.transform.position + (Vector3)shootingPoint, target, damage, splash); Transform smokeEffectTransform = SmokeEffectPool.Instance.GetObject().transform; smokeEffectTransform.localScale = Vector3.one * blastScale; IsometricLocomotion.SetPositionElevated(smokeEffectTransform, (Vector2)gameObject.transform.position + new Vector2(shootingPoint.x, 0), shootingPoint.y); }
private void Start() { IsometricLocomotion.SetPositionOnPlane(transform, transform.position); if (currentTower != null) { UpgradeTo(currentTower); } else { ResetSlot(); } }
public void Setup(Enemy enemy, Vector3 spawnPosition, Vector2 spawnOffset) { dying = false; speed = enemy.Speed; spriteSheet = enemy.SpriteSheet; health = enemy.Health; damage = enemy.Damage; transform.localScale = Vector3.one * enemy.Scale; reward = enemy.RollReward(); moveOffset = spawnOffset; locomotion.ResetElevation(); IsometricLocomotion.SetPositionOnPlane(transform, spawnPosition + (Vector3)moveOffset); }
public void Setup(Projectile projectile, Vector3 projectileSpawnPosition, EnemyDummy target, int projectileDamage, bool splash) { //yeah this.target = target; damage = projectileDamage; speed = projectile.Speed; this.splash = splash; trajectory = projectile.TrajectoryPeak; spriteRenderer.sprite = projectile.Sprite; transform.localScale = Vector3.one * projectile.Scale; impactScale = projectile.ImpactScale; destination = target.transform.position; locomotion.ResetElevation(); IsometricLocomotion.SetPositionOnPlane(transform, projectileSpawnPosition); distanceToTarget = ((Vector2)transform.position - destination).magnitude; moveDirection = (destination - (Vector2)transform.position).normalized; distanceTraveled = 0; }