public void OnDrawGizmos() { if (!Application.isPlaying || show) { aiDriverController = gameObject.GetComponent("AIDriverController") as AIDriverController; List<Transform> waypoints = aiDriverController.waypoints; Vector3 wpPosLast = Vector3.zero; foreach(Transform wp in waypoints) { if (wpPosLast != Vector3.zero) { Debug.DrawRay(wpPosLast, wp.position,color); } wpPosLast = wp.position; } } }
void Update() { if (!Application.isPlaying) { aiDriverController = gameObject.GetComponent("AIDriverController") as AIDriverController; Transform colliderBottom = transform.FindChild("Colliders/ColliderBottom"); if (colliderBottom != null) { aiDriverController.oASideOffset = Mathf.Abs(colliderBottom.localPosition.x) + colliderBottom.localScale.x / 2 + 0.1f; Vector3 vpPos = aiDriverController.viewPoint.localPosition; vpPos.z = colliderBottom.localPosition.z + colliderBottom.localScale.z / 2 + 0.1f; vpPos.x = 0; aiDriverController.viewPoint.localPosition = vpPos; } } }
public void OnDrawGizmos() { if (!Application.isPlaying || show) { aiDriverController = gameObject.GetComponent("AIDriverController") as AIDriverController; aIMotorMapping = gameObject.GetComponent("AIMotorMapping") as AIMotorMapping; if (aiDriverController.useObstacleAvoidance && aIMotorMapping.flWheelMesh != null) { Vector3 viewPointLeft; Vector3 viewPointRight; Vector3 forwardDirection = aiDriverController.viewPoint.TransformDirection(Vector3.forward * aiDriverController.oADistance); //Vector3 centerPointL = transform.position + transform.TransformDirection(Vector3.left * aiDriverController.oASideOffset); //centerPointL.y = aiDriverController.viewPoint.position.y; //Vector3 centerPointR = transform.position + transform.TransformDirection(Vector3.right * aiDriverController.oASideOffset); //centerPointR.y = aiDriverController.viewPoint.position.y; viewPointLeft = aiDriverController.viewPoint.transform.position; viewPointRight = aiDriverController.viewPoint.transform.position; viewPointLeft += aiDriverController.viewPoint.TransformDirection((Vector3.right * aIMotorMapping.flWheelMesh.localPosition.x)); viewPointRight += aiDriverController.viewPoint.TransformDirection((Vector3.right * aIMotorMapping.frWheelMesh.localPosition.x)); float obstacleAvoidanceWidth = aiDriverController.oAWidth; Vector3 leftDirection = aiDriverController.viewPoint.TransformDirection((Vector3.left * obstacleAvoidanceWidth) + (Vector3.forward * aiDriverController.oADistance)); Vector3 rightDirection = aiDriverController.viewPoint.TransformDirection((Vector3.right * obstacleAvoidanceWidth) + (Vector3.forward * aiDriverController.oADistance)); Vector3 leftSide = aiDriverController.viewPoint.TransformDirection(Vector3.left * aiDriverController.oASideDistance); Vector3 rightSide = aiDriverController.viewPoint.TransformDirection(Vector3.right * aiDriverController.oASideDistance); Debug.DrawRay(viewPointLeft, leftDirection, Color.cyan); Debug.DrawRay(viewPointRight, rightDirection, Color.cyan); Debug.DrawRay(aiDriverController.viewPoint.position, forwardDirection, Color.green); Debug.DrawRay(viewPointLeft, forwardDirection, Color.green); Debug.DrawRay(viewPointRight, forwardDirection, Color.green); //Debug.DrawRay(centerPointL, leftSide, Color.magenta); //Debug.DrawRay(centerPointR, rightSide, Color.magenta); //---------------------------------------- //leftFront Vector3 leftFrontSidePos = transform.position + transform.TransformDirection(Vector3.left * aiDriverController.oASideOffset); leftFrontSidePos.y = aiDriverController.viewPoint.position.y; leftFrontSidePos += transform.TransformDirection(Vector3.forward * aiDriverController.oASideFromMid); Debug.DrawRay(leftFrontSidePos, leftSide, Color.magenta); //leftRear Vector3 leftRearSidePos = transform.position + transform.TransformDirection(Vector3.left * aiDriverController.oASideOffset); leftRearSidePos.y = aiDriverController.viewPoint.position.y; leftRearSidePos -= transform.TransformDirection(Vector3.forward * aiDriverController.oASideFromMid); Debug.DrawRay(leftRearSidePos, leftSide, Color.magenta); //rightFront Vector3 rightFrontSidePos = transform.position + transform.TransformDirection(Vector3.right * aiDriverController.oASideOffset); rightFrontSidePos.y = aiDriverController.viewPoint.position.y; rightFrontSidePos += transform.TransformDirection(Vector3.forward * aiDriverController.oASideFromMid); Debug.DrawRay(rightFrontSidePos, rightSide, Color.magenta); //rightRear Vector3 rightRearSidePos = transform.position + transform.TransformDirection(Vector3.right * aiDriverController.oASideOffset); rightRearSidePos.y = aiDriverController.viewPoint.position.y; rightRearSidePos -= transform.TransformDirection(Vector3.forward * aiDriverController.oASideFromMid); Debug.DrawRay(rightRearSidePos, rightSide, Color.magenta); } } }
void Start() { //wir machen dies in der Start-Routine, weil wir im AIDriver-Skript erst in der Awake-Fkt die Waypoints zuweisen //Um sicherzugehen, dass die Waypoints auch gefunden und der List zugewiesen wurde, weisen wir dies deshalb erst hier zu! aiDriverControllerScript = gameObject.GetComponent("AIDriverController") as AIDriverController; waypoints = aiDriverControllerScript.waypoints; }