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 Ultra2000000000 · Dec 29, 2013 at 02:42 AM · objectmouseclickspecific

Trouble adding score when specific object is clicked. (C#)

Trouble adding score when specific object is clicked. (C#)

I'm learning Unity, C#, and attempting to make a Hidden Object Game concept. In other words, I'm a total n00b at this. :)

What I have done is assign specific objects with the tag, "HOGitem". What I want to do is accrue a score when a HOGitem is clicked on and only when those specific items are clicked on. Here's the script:

 using UnityEngine;
 using System.Collections;
 
 public class ScoreManager : MonoBehaviour {
 
     public float pointsPerHOG = 10;
     private float score;
     public GameObject HOGobj;
 
     // Use this for initialization
     void Start () {
         HOGobj = GameObject.FindWithTag("HOGitem");
     }
     
     // Update is called once per frame
     void Update () {
           
           //The intent is to have only the HOGobj add to the score when clicked.
           if(Input.GetMouseButtonDown(0)){
 
                 if(HOGobj) {
         AddPoints (pointsPerHOG);
          }
     }
 }
 
     void OnGUI() {
         GUILayout.Label("score: " + score.ToString("0"));
     }
 
 
     void AddPoints(float points){
         score += points;
     }
 
 }

This will make everything with a collider add to the score until the items that have the tag "HOGitem" are destroyed. I'm a little slow and can't figure out how to use what I researched online to my advantage. I found this:

     void Update(){
     if (Input.GetMouseButtonDown(0)){ // if left button pressed...
     Ray ray = camera.ScreenPointToRay(Input.mousePosition);
     RaycastHit hit;
     if (Physics.Raycast(ray, out hit)){
     // the object identified by hit.transform was clicked
     // do whatever you want
     }
     }
     }

But I have no idea how to make it work so that it "Does whatever I want" only when I click on the items tagged with "HOGitem". I'm learning quite a lot, but apparently not fast enough. Any help with this is greatly appreciated.

Thanks,

Mike

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 Ultra2000000000 · Dec 29, 2013 at 03:29 AM

I don't believe I facepalmed this hard before. I figured it out and apologize for wasting anyone's time. THIS:

     void Update () {
 
         if (Input.GetMouseButtonDown(0)) {
             Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
             RaycastHit hit;
             // Casts the ray and get the first game object hit
             Physics.Raycast(ray, out hit);
             if (hit.collider.tag == "HOGitem") {    
             AddPoints(pointsPerHOG);
             }
         }

solved my problem.

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

19 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

Related Questions

Detect object in a specific part of the screen 1 Answer

2D Load scene by clicking Object 2 Answers

Moving a 3d object in unity on mouse click with click to move controller 1 Answer

give a command to a specific instantiated object 2 Answers

Is there a way to tell a point light only to apply to specific Object(s) 1 Answer


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