// Update is called once per frame void Update() { float distanceToPlayer = GetDistanceToPlayer(); if (distanceToPlayer < enemyStats.trackRange) { LookAtPlayer(); } // TODO: diferent for zombies if (enemyInventory.HasBrickAvailable()) { if (distanceToPlayer < enemyStats.chaseRange && distanceToPlayer > 1.5) { ChasePlayer(); } if (distanceToPlayer < enemyStats.attackRange && CanAttackPlayer()) { AttackPlayer(); } } if (BricksOnGroundController.AreBricksOnTheGround() && enemyInventory.HasRoomForMoreBricks()) { // Go Find Bricks FindBrick(); } }
private void OnTriggerEnter(Collider other) { if (other.gameObject.tag == "Brick" && enemyInventory.HasRoomForMoreBricks()) { enemyInventory.AddBrick(other.gameObject); BricksOnGroundController.RemoveBrick(other.gameObject.transform); } }
private void OnTriggerEnter(Collider other) { if (other.gameObject.tag == "Brick" && playerInventory.HasRoomForMoreBricks()) { playerInventory.AddBrick(other.gameObject); playerData.bricksInInventory = playerInventory.bricksCount; BricksOnGroundController.RemoveBrick(other.gameObject.transform); } }
private void OnCollisionEnter(Collision collision) { if (collision.gameObject.tag == "Ground") { boxCollider.isTrigger = true; rigidbody.isKinematic = true; BricksOnGroundController.AddBrick(transform); } }
private void FindBrick() { Transform targetBrickLocation = BricksOnGroundController.GetClosestBrick(transform); if (targetBrickLocation == null) { return; } // TODO: use nav mesh transform.position = Vector3.MoveTowards(transform.position, targetBrickLocation.position, enemyStats.walkSpeed * Time.deltaTime); }