Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • 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
0
Question by SpeedTutor · Apr 14, 2013 at 08:03 PM · guiraycastif

Checking the raycast

Hello,

I had my previous question closed for "Duplicate" reasons. When I wasn't asking about "HOW TO MAKE A GUI APPEAR" I wanted help on how to recheck the raycast, as I keep getting errors when I tried adding the line: "if(Physics.Raycast(trasnform...)"

I have some code to check if the player is within a certain distance from an object (essentially a door) but want to add a GUI label popup to prompt the player when wanting to open the door. I'm not sure what I should use for the 'if' statement to check whether it's within range. As you can see by the commented "if(RaycastHit Hit = true))"

     using UnityEngine;
     using System.Collections;
      
     public class New_Level_Door : MonoBehaviour {
      
     void Update()
     {
     if(Input.GetKeyDown(KeyCode.E) && CheckForDoor())
     {
     Application.LoadLevel("MainMenu");
     }
     }
      
     bool CheckForDoor()
     {
     RaycastHit hit;
     if(Physics.Raycast(transform.position, transform.forward, out hit, 2))
     {
     Debug.LogWarning("Press E to open the door");
     if(hit.transform.tag == "LevelEnd")
     {
     return true;
     }
     }
     return false;
     }
      
     void OnGUI()
     {
     //if(RaycastHit hit = true))
     {
     GUI.Label (new Rect(5,0,100,20 ),"Press 'E' to open the door!");
     }
     }
     }

Thanks for your time!

Comment
Add comment
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
0

Answer by 1337GameDev · Apr 14, 2013 at 09:43 PM

You have the general idea, you want to screen out non-door objects however.

Just have an if statement that checks if the raycast hit something (as you did above) and then compare the hit.transform.name or hit.transform.layer, or another property to uniquely identify that the hit object was a door.

You have the general idea. Also, make sure to indent code, it helps in reading and debugging. You can also do Debug.Log("debug statement"); to output a string to the console to see if a particular code executes, and output variables, names, members, etc for debug purposes.

Also, separate code you're unsure of into steps and make sure each step works before combining. Your code is simple enough to discern, but in complex scripts, it helps out a lot.

Happy scripting!

Comment
Add comment · 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

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.

Follow this Question

Answers Answers and Comments

12 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

Related Questions

How can I add a distance cap to this script? 3 Answers

Static var triggerGo? 2 Answers

Problem with GUI Buttons with WorldSpace Canvas 2 Answers

Disabling Raycast with GUI 0 Answers

GUI box open on MouseButtonDown 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