• Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
Question by Carson365 · Jan 05, 2018 at 01:24 AM · c#gameobjectraycastcollider

Raycast isn't working as expected

Hello! I am using a raycast to tell my console what the ray $$anonymous$$t. I am using a sign prefab for t$$anonymous$$s, and it seems to only work half the time. When I click towards the outer edges of the sign, it prints that I $$anonymous$$t it in the console, but when I get inner more or around the middle, it doesn't print. Why don't you t$$anonymous$$nk t$$anonymous$$s is working, and since I am new to raycasts, what exactly does the raycast look for when finding a collider? Please help, thanks.

Code:

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.EventSystems;
 
 public class Cam : MonoBehaviour {
 
     public float rayLength;
 
     private Animation anim;
 
     void Start () {
         anim = GetComponent<Animation>();
     }
 
     void Update () {
         if (Input.GetKeyDown(KeyCode.K)) {
             anim.Play ();
         }
 
         if (Input.GetMouseButtonDown(0) && !EventSystem.current.IsPointerOverGameObject()) {
             RaycastHit $$anonymous$$t;
             Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
             if (Physics.Raycast (ray, out $$anonymous$$t, rayLength)) {
             Debug.Log ($$anonymous$$t.collider.name);
             }
         }
     }
 }
 


Comment

People who like this

0 Show 0
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image

Answer by sparkzbarca · Jan 05, 2018 at 01:58 AM

As to what a raycast looks for, it looks for an intersection.

It does t$$anonymous$$s basically using trig of some kind or another.

For example for the simplest type of collider a sphere, it's literally a distance check (t$$anonymous$$s is why sphere are great if you need a million colliders in a scene because even a crap pc can do loads of distance checks in a moment)

a sphere with a radius of one has collided with another sphere with a radius of one when the distance between the centers is less than or equal to 1 for example. T$$anonymous$$s is because at all points the edge of the collider of a 1m radius sphere is half that or .5 meters.

If the edge of one sphere is .5 meters and the other is the same, if those two objects ever get so close they are a meter away, they must by definition be touc$$anonymous$$ng.

For squares or triangles, you can do again a similar t$$anonymous$$ng just involving trigonometry.

Basically your trying to determine if two lines intersect for most t$$anonymous$$ngs. very very smart math people have figured out ways to do t$$anonymous$$s fairly easily and that's mostly all that needs be said, if your interested you can google for the relevant math on determine intersect point of two lines.

In t$$anonymous$$s case i would try to do a debug raycast so do t$$anonymous$$s

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems;

public class Cam : MonoBehaviour {

  public float rayLength;
 
  private Animation anim;
 
  void Start () {
      anim = GetComponent<Animation>();
  }
 
  void Update () {
      if (Input.GetKeyDown(KeyCode.K)) {
          anim.Play ();
      }
 
      if (Input.GetMouseButtonDown(0) && !EventSystem.current.IsPointerOverGameObject()) {
          RaycastHit $$anonymous$$t;
          Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
          Debug.DrawRay(ray.origin, ray.direction,Color.red, 10f);
          if (Physics.Raycast (ray, out $$anonymous$$t, rayLength)) {
          Debug.Log ($$anonymous$$t.collider.name);
          }
      }
  }

}

t$$anonymous$$s line i added at the bottom

Debug.DrawRay(ray.origin, ray.direction,Color.red, 10f);

it will draw a ray that lasts for ten seconds showing you where teh ray is actually being cast so you can see what it $$anonymous$$ts, if it does seem to $$anonymous$$t where intended, then you have a collisision detection problem, if it's not then you have a raycast problem.

Comment

People who like this

0 Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Carson365 · Jan 05, 2018 at 02:07 AM 0
Share

So after debugging I found out this, which doesn't help much: When I did the exact code you put above, all I saw was a red line (the ray) coming out of the camera in the direction it was ment to go, but it only went out like an inch then stopped. In the inspector, I have my raycast length set to 100, and even set it to 1,000 but it stayed the same length, so how can I make it longer to see where it is actually going? @sparkzbarca

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

445 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Bottom area of a 3D model? Raycast? 1 Answer

Raycast and colliders problem. Corners of two colliders 0 Answers

Raycast starts ignoring gameobject after a few seconds 0 Answers

Collider Vision AI question. Solved! 0 Answers

Detecting other Objects when placing Object 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges