• 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 Mattivc · Apr 21, 2010 at 02:02 PM · functionif-statementsjavascript-specific

If statment based on a function not working

I'm working in a AI script, and i have made the following function to check if the enemy can see the player.

function CanSeePlayer(){

 var hit : RaycastHit;
 var rayDirection = playerObject.transform.position - transform.position;

 if (Physics.Raycast (Seeker.transform.position, rayDirection, hit)) {

     if (hit.transform.tag == "Player") {
         Debug.Log("Can see player");
         return true;
     }else{
         Debug.Log("Can not see player");
         return false;
     }
 }

}

If i put this code outside of the function and in the script it self, it works fine.

But when i try to access the function like this:

if(!CanSeePlayer){
Debug.Log("I cant see the player")
}

The script dosent work, and the Debug command dosent get run, even though it should.

Comment
duck

People who like this

1 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

2 Replies

· Add your reply
  • Sort: 
avatar image
Best Answer

Answer by Silverfell-2 · Apr 21, 2010 at 03:37 PM

Should it not be:

function CanSeePlayer():boolean { }

Comment
Mattivc

People who like this

1 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 duck ♦♦ · Apr 21, 2010 at 04:52 PM 0
Share

hehe - nice JS-Fu :) for some reason I'm reminded of: http://thedailywtf.com/Articles/Classic_WTF_-_What_is_Truth_0x3f_.aspx

avatar image

Answer by duck · Apr 21, 2010 at 02:34 PM

Well I was initially going to say that tou need to access the function like this:

if (!CanSeePlayer()) {

(notice the brackets after the function name), however after testing it, in a quirk of javascript syntax, it seems you don't actually need the () so that's not the answer.

Do none of the debug commands run? (you have 3). Do you get any errors?

Another thing I noticed is that you're building the ray direction as the vector between this object and the player object, however you're then casting it from the "Seeker" position (rather than this object's position). Perhaps you meant to write:

if (Physics.Raycast (transform.position, rayDirection, hit)) {

Since you haven't specified what "Seeker" is, it's difficult to know if that part of the code is correct.

Comment

People who like this

0 Show 2 · 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 Mattivc · Apr 21, 2010 at 03:31 PM 0
Share

No, none of my 3 Debug commands gets run.

The seeker is the part of the enemy object and it dosent change anything when i change it to what you posted.

avatar image Mattivc · Apr 21, 2010 at 03:32 PM 0
Share

Oh, and i forgot to menchian i get no errors.

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

No one has followed this question yet.

Related Questions

passing a function as a parameter to another function 1 Answer

Object will not instantiate 1 Answer

Check a boolean function without using Update() 1 Answer

Javascript / Unityscript 'with' keyword 1 Answer

Problem with enabling and playing audios 0 Answers


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