void movement() { float dist = Vector3.Distance(player.transform.position, this.transform.position); Vector3 dir = player.transform.position - transform.position; hit = Physics2D.Raycast(new Vector2(this.transform.position.x, this.transform.position.y), new Vector2(dir.x, dir.y), dist, layerMask); Debug.DrawRay(transform.position, dir, Color.red); Vector3 fwt = this.transform.TransformDirection(Vector3.right); RaycastHit2D hit2 = Physics2D.Raycast(new Vector2(this.transform.position.x, this.transform.position.y), new Vector2(fwt.x, fwt.y), 1.0f, layerMask); Debug.DrawRay(new Vector2(this.transform.position.x, this.transform.position.y), new Vector2(fwt.x, fwt.y), Color.cyan); if (moving == true) { if (hasGun == false) { transform.Translate(Vector3.right * speed * Time.deltaTime); } else { if (Vector3.Distance(this.transform.position, player.transform.position) < 5 && pursuingPlayer == true) { } else { transform.Translate(Vector3.right * speed * Time.deltaTime); } } } if (patrol == true) { speed = 2.0f; if (hit2.collider != null) { if (hit2.collider.gameObject.tag == "Wall") { if (clockwise == false) { transform.Rotate(0, 0, 90); } else { transform.Rotate(0, 0, -90); } } } if (weaponToGoTo != null) { patrol = false; goingToWeapon = true; } } if (pursuingPlayer == true) { speed = 3.5f; rid.transform.eulerAngles = new Vector3(0, 0, Mathf.Atan2((playerLastPos.y - transform.position.y), (playerLastPos.x - transform.position.x)) * Mathf.Rad2Deg); if (hit.collider.gameObject.tag == "Player") { playerLastPos = player.transform.position; } } if (goingToLastLoc == true) { speed = 3.0f; rid.transform.eulerAngles = new Vector3(0, 0, Mathf.Atan2((playerLastPos.y - transform.position.y), (playerLastPos.x - transform.position.x)) * Mathf.Rad2Deg); if (Vector3.Distance(this.transform.position, playerLastPos) < 1.5f) { patrol = true; goingToLastLoc = false; } } if (goingToWeapon == true) { speed = 3.0f; rid.transform.eulerAngles = new Vector3(0, 0, Mathf.Atan2((weaponToGoTo.transform.position.y - transform.position.y), (weaponToGoTo.transform.position.x - transform.position.x)) * Mathf.Rad2Deg); if (ewc.getCur() != null) { weaponToGoTo = null; patrol = true; goingToWeapon = false; pursuingPlayer = false; goingToLastLoc = false; } if (weaponToGoTo == null) { weaponToGoTo = null; patrol = true; goingToWeapon = false; pursuingPlayer = false; goingToLastLoc = false; } else { if (weaponToGoTo.active == false) { weaponToGoTo = null; patrol = true; goingToWeapon = false; pursuingPlayer = false; goingToLastLoc = false; } } } }
void movement() { float dist = Vector3.Distance(player.transform.position, this.transform.position); Vector3 dir = player.transform.position - transform.position; hit = Physics2D.Raycast(new Vector2(this.transform.position.x, this.transform.position.y), new Vector2(dir.x, dir.y), dist, layerMask); Debug.DrawRay(transform.position, dir, Color.red); Vector3 fwt = this.transform.TransformDirection(Vector3.right); RaycastHit2D hit2 = Physics2D.Raycast(new Vector2(this.transform.position.x, this.transform.position.y), new Vector2(fwt.x, fwt.y), 1.0f, layerMask); Debug.DrawRay(new Vector2(this.transform.position.x, this.transform.position.y), new Vector2(fwt.x, fwt.y), Color.cyan); if (moving == true) //new for tut 7 { if (hasGun == false) { transform.Translate(Vector3.right * speed * Time.deltaTime); } else { if (Vector3.Distance(this.transform.position, player.transform.position) < 5 && pursuingPlayer == true) //new enemy weapon { } else { transform.Translate(Vector3.right * speed * Time.deltaTime); } } } if (patrol == true) { //Debug.Log ("Patrolling normally"); speed = 2.0f; if (hit2.collider != null) { // Debug.LogError(hit2.collider.tag); if (hit2.collider.gameObject.tag == "Wall") { //Quaternion rot = this.transform.rotation; if (clockwise == false) { transform.Rotate(0, 0, 90); } else { transform.Rotate(0, 0, -90); } } } if (weaponToGoTo != null) { patrol = false; goingToWeapon = true; } } if (pursuingPlayer == true) { //transform.Translate(Vector3.right * speed * Time.deltaTime); //Debug.Log("Pursuing Player"); speed = 3.5f; rid.transform.eulerAngles = new Vector3(0, 0, Mathf.Atan2((playerLastPos.y - transform.position.y), (playerLastPos.x - transform.position.x)) * Mathf.Rad2Deg); if (hit.collider.gameObject.tag == "Player") { playerLastPos = player.transform.position; } } if (goingToLastLoc == true) { //Debug.Log ("Checking last known player location"); speed = 3.0f; // transform.Translate(Vector3.right * 4 * Time.deltaTime); rid.transform.eulerAngles = new Vector3(0, 0, Mathf.Atan2((playerLastPos.y - transform.position.y), (playerLastPos.x - transform.position.x)) * Mathf.Rad2Deg); if (Vector3.Distance(this.transform.position, playerLastPos) < 1.5f) { //not found player, return to patrol patrol = true; goingToLastLoc = false; } } //&& pursuingPlayer==false && goingToLastLoc==false && patrol==false if (goingToWeapon == true) { //Debug.Log("going weapon"); speed = 3.0f; // transform.Translate(Vector3d.right * 4 * Time.deltaTime); rid.transform.eulerAngles = new Vector3(0, 0, Mathf.Atan2((weaponToGoTo.transform.position.y - transform.position.y), (weaponToGoTo.transform.position.x - transform.position.x)) * Mathf.Rad2Deg); if (ewc.getCur() != null) { //not found player, return to patrol weaponToGoTo = null; patrol = true; goingToWeapon = false; pursuingPlayer = false; goingToLastLoc = false; } if (weaponToGoTo == null) //re wrote this to fix bugs { weaponToGoTo = null; patrol = true; goingToWeapon = false; pursuingPlayer = false; goingToLastLoc = false; } else { if (weaponToGoTo.active == false) { weaponToGoTo = null; patrol = true; goingToWeapon = false; pursuingPlayer = false; goingToLastLoc = false; } } } }