• 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 YOLO_cakes · Jan 08, 2017 at 08:47 AM · c#animationtree

Tree Chopping Animation

Hello Unity Users! First I would like to apologize if this question has been answered somewhere, I have tried looking around but nothing has worked as of yet (I am probably being stupid). Basically I have two scripts, one for a tree so that when you left click on a tree it will take health away from the tree, I also have another script so that when you left click an animation plays such as swinging a rock. I would like to be able to link these 2 together, at the moment the user can go up to a tree and spam left click constantly taking health away because the tree script is not linked to the animation, this means they can get at least 7 hits from the tree before the animation even finishes.

I would like the animation to finish before the user is able to hit the tree again, I am pretty sure this is simple and again, I apologize if I am being stupid (to be fair I have not slept for 30 hours xD). Great thanks for anyone who can help me with this!

Play Animation Script:

 using UnityEngine;
 using System.Collections;
 
 public class rock_swing : MonoBehaviour {
 
     Animator Anim;
     int RockHash = Animator.StringToHash("Swing");
 
     // Use this for initialization
     void Start()
     {
 
         Anim = GetComponent<Animator>();
     }
 
     // Update is called once per frame
     void Update()
     {
         if (Input.GetMouseButtonDown(0)) // Left Mouse Click
         {
             Anim.SetTrigger(RockHash); // Play Animation
             // Wait for animation to finish before you are able to hit again.
         }
     }
 }


Tree Script:

 using UnityEngine;
 using System.Collections;
 
 public class Tree : MonoBehaviour {
 
     public int minDamage = 25;
     public int maxDamage = 50;
     public float weaponRange = 3.5f;
 
     public Camera FPSCamera;
 
     public TreeHealth treeHealth;
 
     private void Update()
     {
         Ray ray = FPSCamera.ScreenPointToRay(new Vector2(Screen.width / 2, Screen.height / 2));
         RaycastHit hitInfo;
 
         if(Input.GetKeyDown(KeyCode.Mouse0))
         {
             if(Physics.Raycast(ray, out hitInfo, weaponRange))
             {
                 if(hitInfo.collider.tag == "Tree")
                 {
                     treeHealth = hitInfo.collider.GetComponent<TreeHealth>();
                     AttackTree();
                 }
             }
         }
     }
 
     private void AttackTree()
     {
         int damage = Random.Range(minDamage, maxDamage);
         treeHealth.health -= damage;
         // something to stop the person from spamming left click to keep taking damage from tree without finishing animation.
         // Basically stop them cheating the system.
     }
 
 }
 



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

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by tanoshimi · Jan 08, 2017 at 08:53 AM

Rather than have the tree separately listen for mouseclicks, you can use an Animation Event assigned to a certain frame of your tree-chopping animation to specify the point at which AttackTree() is called.

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 YOLO_cakes · Jan 08, 2017 at 11:13 AM 0
Share

Will start looking into this! Will update when I get it working :p

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

7 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Distribute terrain in zones 3 Answers

Switching between two blend trees,How do I change Entry to other blend tree 0 Answers

Multiple Cars not working 1 Answer

AddMixingTransform with Mecanim 1 Answer

changing animations on an object without the script. 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