// Update is called once per frame void Update() { rayDir = new Vector3(-1.0f, 0, 1.0f); angle = -(19 * Mathf.PI) / 40; for (int i = 0; i < raysNr; i++) { z = Mathf.Cos(angle); x = Mathf.Sin(angle); rayDir = new Vector3(x, 0, z); //print("z: " + z + "x: " + x); angle += Mathf.PI / 20; // Does the ray intersect any objects excluding the player layer if (Physics.Raycast(transform.position, transform.TransformDirection(rayDir), out hit[i], maxDist)) { if (hit[i].collider.gameObject.name == target.name) { Debug.DrawRay(transform.position, transform.TransformDirection(rayDir).normalized *hit[i].distance, Color.red); iMap.SetPoint(hit[i].point); } else if (hit[i].collider.gameObject.tag == "Player") { //annan Ai } else if (hit[i].collider.gameObject.tag == "LowBox") { //add climbingstuff } else { Debug.DrawRay(transform.position, transform.TransformDirection(rayDir).normalized *hit[i].distance, Color.yellow); Node n = GridScript.GetNodeFromWorldPos(hit[i].point); if (n.walkable) { GridScript.DisableNode(n); //n.walkable=false; } } } else { Debug.DrawRay(transform.position, transform.TransformDirection(rayDir).normalized *maxDist, Color.white); } } }
// Update is called once per frame void Update() { rayDir = new Vector3(-1.0f, 0, 1.0f); angle = -(19 * Mathf.PI) / 40; for (int i = 0; i < raysNr; i++) { z = Mathf.Cos(angle); x = Mathf.Sin(angle); rayDir = new Vector3(x, 0, z); //print("z: " + z + "x: " + x); angle += Mathf.PI / 20; // Does the ray intersect any objects excluding the player layer if (Physics.Raycast(transform.position, transform.TransformDirection(rayDir), out hit[i], maxDist)) { if (hit[i].collider.gameObject.name == target.name) { Debug.DrawRay(transform.position, transform.TransformDirection(rayDir).normalized *hit[i].distance, Color.green); iMap.SetPoint(hit[i].point); } else if (hit[i].collider.gameObject.name == enemy.name) { //Fly om den ser sin fiende Debug.DrawRay(transform.position, transform.TransformDirection(rayDir).normalized *hit[i].distance, Color.red); //Riktning till filenden Vector3 EnemyDir = hit[i].collider.gameObject.transform.position - transform.position; //Positionen den ska fly till Vector3 MovePoint = -EnemyDir * FleeDist; print("Movepoint " + MovePoint + " EnemyDir" + EnemyDir); //Kolla om nya flyktpunkten är utanför kartan if (MovePoint.x >= 25) { MovePoint.x = 24; } else if (MovePoint.x <= -25) { MovePoint.x = -24; } if (MovePoint.z >= 25) { MovePoint.z = 24; } else if (MovePoint.z <= -25) { MovePoint.z = -24; } //Gå till punkten, Man skulle kunna ändra till att den kollar den bästa vägen i en cirkel typ this.gameObject.GetComponent <MovementAi>().pathScript.FindPath(this.gameObject.transform.position, MovePoint); } else if (hit[i].collider.gameObject.tag == "LowBox") { //add climbingstuff } else { Debug.DrawRay(transform.position, transform.TransformDirection(rayDir).normalized *hit[i].distance, Color.yellow); Node n = GridScript.GetNodeFromWorldPos(hit[i].point); if (n.walkable) { GridScript.DisableNode(n); //n.walkable=false; } } } else { Debug.DrawRay(transform.position, transform.TransformDirection(rayDir).normalized *maxDist, Color.white); } } }