private void OnMissingTarget() { if (target != null && Vector2.Distance(target.transform.position, transform.position) > escapeDistance) { target = null; movement.ResetMovement(); } }
public void TryAttack(CharacterObjectController target) { if (Vector2.Distance(target.transform.position, transform.position) < weapon.range) { weapon.OnAttack(target, combatController); // combatController.Attack(target.stats, weapon); } }
protected override void OnDead() { if (stats.health <= 0) { target = null; movement.ResetMovement(); gameObject.SetActive(false); } }
private void OnTriggerEnter2D(Collider2D collision) { var characterCon = collision.GetComponent <CharacterObjectController>(); if (characterCon != null && potentialTargets.Exists(potentialTar => potentialTar == characterCon.type) && target == null) { target = characterCon; } }
public override void OnAttack(CharacterObjectController target, CombatController combatController) { //Debug.Log("Att pla: " + attackTime); //Debug.Log("cool pla: " + cooldown); //Debug.Log("time pla: " + Time.time); if (Time.time - attackTime > cooldown) { var newProjectile = Instantiate(projectile.gameObject, transform.position, Quaternion.identity); newProjectile.SetActive(true); attackTime = Time.time; var projectileComponent = newProjectile.GetComponent <Projectile>(); projectileComponent.target = target; projectileComponent.combatController = combatController; projectileComponent.rangeWeapon = this; } }
private void UpdatePath(CharacterObjectController target, Chunk chunk) { Vector3 startPosition = (path != null && path.Count > pathIterator + 1) ? (Vector3)path[pathIterator].position : transform.position; path = pathfinding.FindPath(chunk, target.currentChunk, startPosition, target.transform.position); pathIterator = 0; if (path != null) { Vector2 centerPosition = Vector2.zero; for (int i = 0; i < path.Count - 1; i++) { //Debug.DrawLine(new Vector3(path[i].position.x, path[i].position.y), // new Vector3(path[i + 1].position.x, path[i + 1].position.y), Color.green, 10.0f); centerPosition = path[i].position; centerPosition.x += 0.5f; // przesunięcie z wierzchołka płytki do jej środka centerPosition.y += 0.5f; // path[i].position = centerPosition; } } }