- Home /
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
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.
Your answer
Follow this Question
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