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 epiphany347 · Nov 26, 2013 at 04:30 AM · damagemessagesendproximityapply

JS script for applying damage to player when within a certain proximity to the Enemy.

Hello there. I'm very new to unity and am just now getting into scripting specifically Javascript. Right now I'm trying to come up with a script for an enemy to apply damage to the player when the player is within a certain distance to the enemy.Kinda in the same vain of Slender the arrival where the closer you get to slender man the more damage he does to you. I know the best way to do it is to have the enemy send a message to the player and call on the payer script, I just don't know how I would write that. Can anyone point me in the right direction, of where I can learn to do that?

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

2 Replies

· Add your reply
  • Sort: 
avatar image
0

Answer by W1k3 · Nov 26, 2013 at 05:51 AM

I would start out creating a big sphere collider around the enemy and setting it as a trigger. Then whenever the player gets inside it's proximity zone the player script detects that it's in the collider and takes damage.

player script: public static var intrigger : bool = false;

if(intrigger == true){ takedamage(); }

enemy script:

function OnTriggerEnter (other : Collider) { player.intrigger = true; }

Might be wrong as I don't use javascript.

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
avatar image
0

Answer by highpockets · Nov 26, 2013 at 06:05 AM

Ya, I really easy way to do this is to have a Sphere collider that is attached to the enemy. Scale it to the size you need and make sure that the isTrigger is checked on the collider in the editor.

Then attach a script to the enemy that includes the function, OnTriggerEnter ( http://docs.unity3d.com/Documentation/ScriptReference/Collider.OnTriggerEnter.html ), in it and you may want to use OnTriggerStay and OnTriggerExit accordingly as well.

It would look something like this on the enemy side:

  function OnTriggerEnter (other : Collider)
             {
        if( other.gameObject.tag == Player )
        {
         other.gameObject.GetComponent(HealthScript).DamageCaused();
         }
         }
     
     function OnTriggerStay (other : Collider)
             {
           if( other.gameObject.tag == Player )
        {
         other.gameObject.GetComponent(HealthScript).DamageCaused();
         }
         }

   

In the example above, it expects you to set the Player tag in the editor to "Player"

And like this on the player side:

 var health : float = 100;
 var damage : float = 5;
 
 function DamageCaused()
             {
 
              health = health - damage;
 
             if( health <= 0 )
             {
 
             Die();
         }
         }

I haven't tested this and I rarely use JS, but something like this should work.

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

18 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

Related Questions

SendMessage every second? 2 Answers

SendMessage and RaycastHit 2 Answers

send message from android to me 0 Answers

incomplete Enemy Ai (move/attack on sight) js script 0 Answers

Trouble with apply damage to enemy 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