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 JediKnight · Aug 15, 2012 at 09:25 PM · messagesend

How to send messages

So I have game and it workds except when I get hit, I don't know how to decrease energy. In the GUIText object I have this code:

 #pragma strict
 var health : Number = 30;
 
 function Start () {}
 
 function Update () {
  GetComponent(GUIText).text = health + "/30";
 }
 
 function DecreaseHealth()
 {
  health--;
 }

but I dont know how to call it inside this code(the next bit of code resides in my enemies.):

 #pragma strict
 
 function Start () {
 
 }
 
 function Update () {
 
 }
 
 function OnCollisionEnter(victim : Collision)
 {
  if(victim.name == "First Person Controller")
  {
   //Code to decrease energy and sends a message to the GUIText object
  }
 }

So could I send a message from inside the second block of code into the first to call the method DecreaseEnergy? If yes then how?

Comment
Add comment · Show 1
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 DaveA · Aug 15, 2012 at 09:34 PM 0
Share

Sorry Qato messes up your code so bad. Tried to fix it. Can you edit?

2 Replies

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by GC1983 · Aug 15, 2012 at 09:49 PM

First, take the GetComponent call out of Update(). You GetComponent only needs to be called once. Put it in Awake() or Start().

You can go about this two ways. Have a OnTriggerEnter()call on your player object and if any other tagged objects make collision with the player character, then decrease the health.

Or you could put the OnTriggerEnter()call the enemy objects and if they each hit the player object, execute health.

I would recommend putting the OnTriggerEnter() on the player object. So in the player script do this

 #pragma strict

 public var health : int = 30;
 var PlayerHealthDisplay : guiText;

 function Update()
 {
  PlayerHealthDisplay.text = "" + health;
 }
 
 function DecreaseHealth()
 {
  health--;
 }
 
 function OnTrigger(victim : Collision)
 {
  if(victim.gameObject.tag == "enemy")
      DecreaseHealth();
 }

Hope this helps.

Comment
Add comment · 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 JediKnight · Aug 15, 2012 at 09:53 PM 0
Share

Thanks!!!!

avatar image GC1983 · Aug 15, 2012 at 09:57 PM 0
Share

This may not be entirely correct, but it should give you a good start.

avatar image
0

Answer by DaveA · Aug 15, 2012 at 09:35 PM

If both scripts are on the same object then just call SendMessage("DecreaseHealth"); If it's on a different object, get that object and call thatObject.SendMessage("DecreaseHealth");

Comment
Add comment · 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 JediKnight · Aug 15, 2012 at 09:43 PM 0
Share

I get an error that is saying I need a non-static member of UnityEngine.Component to access Send$$anonymous$$assage...

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

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

How to Send Message to other GameObject 3 Answers

BroadcastMessage 1 Answer

Flame Thrower - Particle Collision Help 1 Answer

Pass Enum To Function Parameter 2 Answers

How do i Specify a Receiver for a Send Message Function? 2 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