IEnumerator MoveRoutine(bool isBlock = false) { if (isBlock) { Vector2 origin = ((Vector2)transform.position); Vector2 dest = ((Vector2)transform.position + _currentDir * _walkSize); if (ColliderChecker.CheckColliders(origin, dest, _obstacles)) { yield break; } } _isMoving = true; Vector2 walkAmount = _currentDir * (_walkSize / _walkCount); while (true) { this.transform.Translate(walkAmount); _currentWalkCount++; if (_currentWalkCount == _walkCount) { _currentWalkCount = 0; _isMoving = false; yield break; } yield return(new WaitForSeconds(_walkTime)); } }
// Start is called before the first frame update void Awake() { if (TryGetComponent(out Tower tower)) { this.tower = tower; } if (TryGetComponent(out MaterialChanger materialChanger)) { this.materialChanger = materialChanger; } if (TryGetComponent(out ColliderChecker colliderChecker)) { this.colliderChecker = colliderChecker; } if (TryGetComponent(out TowerBuildingController towerBuildingController)) { this.towerBuildingController = towerBuildingController; } if (TryGetComponent(out TowerPlacingController towerPlacingController)) { this.towerPlacingController = towerPlacingController; } materialChanger.IgnoredMeshes.Add(towerPlacingController.attackRangePreview.GetComponent <MeshRenderer>()); }
public ColliderController(ColliderChecker colliderChecker, Life life, Point point, MonoBehaviour script) { this.colliderChecker = colliderChecker; this.life = life; this.point = point; this.script = script; script.StartCoroutine(Updater()); }
protected virtual bool DetectPlayer() { Vector2 origin = ((Vector2)transform.position + _currentDir * _walkSize); Vector2 dest = ((Vector2)transform.position + (_currentDir * _walkSize) * _detectRange); List <Collider2D> playerCols = ColliderChecker.GetColliders(origin, dest, "Player"); if (playerCols.Count > 0) { _detectedPlayer = playerCols[0].gameObject.GetComponent <PlayerController>(); return(true); } else { return(false); } }
protected virtual void CheckColEntered() { if (_isActive) { List <Collider2D> cols = ColliderChecker.GetColliders(this.transform.position, this.transform.position, _tag); foreach (var col in cols) { if (col.tag == "Npc") { col.GetComponent <EventNpc>().Delete(); } if (col.tag == "Player") { PlayerController player = col.GetComponent <PlayerController>(); StartCoroutine(TeleportPlayer(player)); } } } }