Vector3 CollisionAvoidance() { //Vector3 offsetPosition; //for (int i = 0; i < collisionTesters.Count; i++) //{ // offsetPosition = collisionTesters[i].GetSteeringOffset(); // if (offsetPosition != Vector3.zero) // { // Vector3 desiredVelocity = (offsetPosition - transform.position).normalized * maxSpeed; // return desiredVelocity - velocity; // } //} TurningStatus turningStatus = collisionTester.DetectCollision(); if (turningStatus == TurningStatus.CW) { return(transform.right * maxSpeed); } else if (turningStatus == TurningStatus.CCW) { return(-transform.right * maxSpeed); } else { return(transform.forward * maxSpeed); } }
public TurningStatus DetectCollision() { TurningStatus turningStatus = TurningStatus.None; RaycastHit centerHit; if (Physics.Raycast(centerLineTransform.position, centerLineTransform.forward, out centerHit, lineLength, collisionLayer)) { centerLineRenderer.material = collisionMaterial; } else { centerLineRenderer.material = noCollisionMaterial; } RaycastHit leftHit; if (Physics.Raycast(leftLineTransform.position, leftLineTransform.forward, out leftHit, lineLength, collisionLayer)) { leftLineRenderer.material = collisionMaterial; } else { leftLineRenderer.material = noCollisionMaterial; } RaycastHit rightHit; if (Physics.Raycast(rightLineTransform.position, rightLineTransform.forward, out rightHit, lineLength, collisionLayer)) { rightLineRenderer.material = collisionMaterial; } else { rightLineRenderer.material = noCollisionMaterial; } if (leftHit.collider) { turningStatus = TurningStatus.CW; } else if (rightHit.collider) { turningStatus = TurningStatus.CCW; } else { turningStatus = TurningStatus.None; } return(turningStatus); }
//turn right public void TurnRight() { currentTS = TurningStatus.TurnRight; }
//turn maintain public void TurnMaitain() { currentTS = TurningStatus.Maintain; }
//turn left public void TurnLeft() { currentTS = TurningStatus.TurnLeft; }