- Home /
RayCasting won't detect collision
Hello, I'm fairly new to Raycasting and I'm running into this problem with my player (Attached with player controller) GameObject. Basically I want to have my player moving on a 3D grid-base puzzle, grid by grid corresponding with each keystroke.
I have the basic movement set up but I want the player to detect Obstacles using Raycast so if the collider is a obstacle the player will not "Move" at all towards it.
my script looks like this:
CharacterController controller;
public float distance;
void Start(){
controller = GetComponent<CharacterController>();
temp = level;
}
void Update() {
RaycastHit hit;
Ray landingRay = new Ray (controller.transform.position, getDirection ());
// The problem is here
if (Physics.Raycast (landingRay, out hit, distance)) {
if(hit.collider.tag != "Obstacle")
Move ();
}
}
private Vector3 newPos;
Vector3 getDirection(){
newPos = controller.transform.position;
Vector3 right = new Vector3(distance, 0, 0); Vector3 left = new Vector3(-distance, 0, 0);
Vector3 forward = new Vector3(0, 0, distance); Vector3 back = new Vector3(0, 0, -distance);
if (Input.GetButtonDown ("Horizontal") && Input.GetAxis ("Horizontal") > 0) {newPos += right; return right;}
if (Input.GetButtonDown ("Horizontal") && Input.GetAxis ("Horizontal") < 0) {newPos += left; return left;}
if (Input.GetButtonDown ("Vertical") && Input.GetAxis ("Vertical") > 0) {newPos += forward; return forward;}
if (Input.GetButtonDown ("Vertical") && Input.GetAxis ("Vertical") < 0) {newPos += back; return back;}
return Vector3.zero;
}
void Move(){
controller.SimpleMove(newPos - controller.transform.position);
}
Any suggestions?
Answer by mwbranna · May 04, 2015 at 06:13 PM
On line 11 you require the raycast to hit something in order to move at all.
My guess is that you aren't hitting anything when trying to move into an open square.
Try:
if (Physics.Raycast (landingRay, out hit, distance)) {
if(hit.collider.tag != "Obstacle")
Move ();
} else {
Move ();
}
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Distribute terrain in zones 3 Answers
Bottom area of a 3D model? Raycast? 1 Answer
How to get the distance between two objects in feet/meter? 1 Answer
Mouse Click + Raycast + Colliders 2 Answers