• 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 Hellro · Nov 06, 2012 at 07:00 PM · raycastcolliderbooleanspawningdetection

RayCast Boolean Help

Hey guys, I have a RayCast problem. First let me explain what I want. You kill the zombie, and then in a few seconds the zombie will respawn in the same location. Now for obvs. reasons I dont want the zombie to spawn if the player is looking directly at him.

So I set up a RayCast where I say "If the players raycast is colliding with a zombie then set spawnSight = true and if it is not set spawnSight = false. If spawnSight = true my Respawn will not Respawn

I dont know if I havent had enough sleep or what but my code doesnt seem to work when the RayCast collides spawnSight is set to true, however when the RayCast leaves the collider it stays at true

Sorry if this is a dumb question any help would be appreciated thanks again!

using UnityEngine; using System.Collections;

 public class RayCast : MonoBehaviour {
 
      float distance = 40;
      Vector3 direction;
      RaycastHit hit;
      GameObject zombie;
      
      public static bool spawnSight;
 
     void Start()
     {
        zombie = GameObject.FindWithTag("Enemy");
     }
 
     // Update is called once per frame
      void Update () {
      Debug.Log(spawnSight);
     
     direction = transform.TransformDirection(Vector3.forward);
     Debug.DrawRay(transform.position, direction * distance, Color.blue);
     
     if(Physics.Raycast(transform.position, direction, out hit, distance))
     {
         if(hit.collider.gameObject == zombie)
         {
           spawnSight = true;
         }
     }
     else
     {
           spawnSight = false;
     }
     
          
     }
 }
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

  • Sort: 
avatar image

Answer by Xathereal · Nov 06, 2012 at 10:09 PM

Try using "Debug.Log" to print out the "hit" data, like the gameObject name.

It might be hitting something else, so it wouldn't change the 'spawnSight' to true because it isn't a zombie and wouldn't change it to false because it hit something.

Try something like this and you will probably find your answer:

 if (Physics.Raycast(transform.position, direction, out hit, distance))
 {
     Debug.Log(hit.collider.gameObject);

     if (hit.collider.gameObject == zombie)
     {
         spawnSight = true;
     }
     else
     {
         spawnSight = false;
     }
 }
Comment

People who like this

0 Show 0 · 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

Unity Answers is in Read-Only mode

Unity Answers content will be migrated to a new Community platform and we are aiming to launch a public beta by June 9. Please note, Unity Answers is now in read-only so we can prepare for the final data migration.

For more information and updates, please read our full announcement thread in the Unity Forum.

Follow this Question

Answers Answers and Comments

10 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

Related Questions

Object detection in front of Character 1 Answer

Check if tower is already placed 1 Answer

Make Raycast ignore collider on boolean 1 Answer

Raycast Hit not toggling variable if stops hitting 1 Answer

I don't know why i can't detect by ray sth. tagged, 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