private void Update() { //Added just for fun if (dying) { currentDyingTime += Time.deltaTime; Vector2 offset = (destination - (Vector2)transform.position).normalized; float angle = Mathf.Atan2(offset.y, offset.x) + 2 * Mathf.PI * currentDyingTime / dyingTimer; if (spriteSheet != null) { dummySprite.sprite = spriteSheet.GetSprite(new Vector2(Mathf.Cos(angle), Mathf.Sin(angle))); } if (currentDyingTime > dyingTimer) { ReturnToPool(); } return; } //moving object here Vector2 moveDir = destination - (Vector2)transform.position; float distance = moveDir.magnitude; moveDir = moveDir.normalized; if (spriteSheet != null) { dummySprite.sprite = spriteSheet.GetSprite(moveDir); } locomotion.PlanarMovement(moveDir * Time.deltaTime * speed); if (distance < ReachThreshold) { SetDestination(currentNavEntity.GetNext()); } CalculateRemainingDistance(); }
private void CalculateRemainingDistance() { if (currentNavEntity == null) { distanceRemaining = Mathf.Infinity; return; } float distance = 0; distance += (destination - (Vector2)transform.position).magnitude; NavEntity navEntity = currentNavEntity; while (navEntity.GetNext() != null) { distance += (navEntity.GetNext().transform.position - navEntity.transform.position).magnitude; navEntity = navEntity.GetNext(); } distanceRemaining = distance; }