void HandleInput() { float x = Input.GetAxisRaw("Horizontal"); float y = Input.GetAxisRaw("Vertical"); xInput = x; yInput = y; if (Input.GetKeyDown("space") && !repairing) { repairing = true; } if (Input.GetKeyUp("space")) { repairing = false; if (repairTarget) { DestructibleBehavior db = repairTarget.GetComponent <DestructibleBehavior>(); db.setRepairing(false); } } }
void Repair() { if (repairing && repairTarget) { DestructibleBehavior db = repairTarget.GetComponent <DestructibleBehavior>(); Debug.Log("Player is setting block repairing"); db.setRepairing(true); } }
private void HandleAttack() { DestructibleBehavior db = target.GetComponent <DestructibleBehavior>(); if (db) { db.HandleAttack(damage, gameObject); state = "idle"; } }
private void removeCurrentRepairTarget() { if (repairTarget) { DestructibleBehavior db = repairTarget.GetComponent <DestructibleBehavior>(); if (db) { db.setRepairTarget(false); db.setRepairing(false); } repairTarget = null; } }
public void OnTriggerEnter(Collider other) { if (other.tag == "Destructible") { removeCurrentRepairTarget(); repairTarget = other.gameObject; DestructibleBehavior db = repairTarget.GetComponent <DestructibleBehavior>(); if (db) { db.setRepairTarget(true); } } }
public void HandleMove() { float step = speed * Time.deltaTime; if (isDisappointed) { transform.position = Vector3.MoveTowards(transform.position, origin, step * .5f); return; } if (this.target) { DestructibleBehavior db = target.GetComponent <DestructibleBehavior>(); if (db) { if (db.getHp() > 0) { float distance = Vector3.Distance(transform.position, target.transform.position); if (distance > distanceFromWall) { transform.position = Vector3.MoveTowards(transform.position, target.transform.position, step); } else { HandleAttack(); } } else { transform.position = Vector3.MoveTowards(transform.position, lootTarget.transform.position, step); if (hasGold) { transform.position = Vector3.MoveTowards(transform.position, origin, step * 2); } } } } }