• 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 Snowhouse · Apr 20, 2021 at 01:55 AM · enemydamagestarthealth

how do i damage the player on enemy start, Not collision

so i have this basic enemy script that works fine

public class Enemy : MonoBehaviour { public float health; public float damage;

 public GameObject deatheffect;

public void Update() {

     if (health <= 0) 
     { 
         Instantiate(deatheffect,transform.position,transform.rotation);
         Destroy(gameObject);
     }

 }

 void OnTriggerEnter(Collider hitInfo)
 {
   
         Player player = hitInfo.GetComponent<Player>();
         if (player != null)
         {
         player.health -= damage;
         health -= player.attackPower;
         }

 }

}

but i have a boss that instantiates an object for a health debuff and i dont want the debuff to use collision. i just want the player to lose health on the debuffs Start.

so how do i change the OnTriggerEnter to Start.ive tried this

public class testfox : MonoBehaviour {

 public float attackBuff;
 public float damage = 4;
 public GameObject player;


 void Start()
 {
    player = GameObject.Find("Player");
    player.health -= damage;
    Destroy(gameObject);
 }

},

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
Best Answer

Answer by HellsHand · Apr 20, 2021 at 11:14 AM

  public float attackBuff;
  public float damage = 4;
  public PlayerScript player;  //Declare variable for the players script
  void Start()
  {
     player = GameObject.Find("Player").GetComponent<PlayerScript>();  //Find the player and get it's script component
     player.health -= damage;  //Provided health is defined for the player this should do it
     Destroy(gameObject);
  }
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 hassanyawar · Apr 20, 2021 at 01:15 PM 0
Share

I would suggest to get player reference using built-in player tag. It will be less costly.

 player = GameObject.FindObjectWithTag("Player").GetComponent<PlayerScript>();
avatar image Snowhouse hassanyawar · Apr 20, 2021 at 04:48 PM 0
Share

This worked! thank you!

avatar image
0

Answer by lorenzfresh · Apr 20, 2021 at 06:11 PM

// PlayerScript

 public class PlayerController : MonoBehaviour{
 
 int health = 100;
    
  public void TaskDamage(int damage) {
         health -= damage;
         if (health <= 0) {
         // GameOver Screen
         }
     }
 }
 

Enemy Script

  public class EnemyAI : MonoBehaviour{
         
         int AttackDamage = 10;
         private PlayerController playerScript; // <-- the player script
     
       private void Awake() {
             playerScript = GameObject.Find("Player").GetComponent<PlayerController>();
     // The PlayerController script must be on the Game Object Player
         }
     
            private void Start() {
              AttackPlayer(AttackDamage);
             }
         
         private void AttackPlayer(int damage){
         playerScript.TaskDamage(damage)
              }
         }
     
 
 


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.

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

124 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 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 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 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 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 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 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

The enemy don´t lose health, but why??? 0 Answers

How do I destroy a game object (The enemy Goblin Game Object) upon entering a collision box? (JavaScript) 2 Answers

Melee Damage script by collision 2 Answers

Enemies sharing health 2 Answers

Deal damage on collision 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