Search Unity

Several objects one script C#

Discussion in 'Scripting' started by Mateusz Gryczan, Nov 26, 2014.

  1. Mateusz Gryczan

    Mateusz Gryczan

    Joined:
    May 10, 2014
    Posts:
    10
    Hi, I got stuck. I don't know what to do. I have a few objetcs(letters) and I want to when my script generate random letter and check if is correct move to other object with same script.



    Code:

    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3.  
    4. public class generateRandomSprite : MonoBehaviour {
    5.  
    6.     //public
    7.     public countDownC _countDown;
    8.     public KeyCode[] SpriteKeyCode;
    9.  
    10.     //public Sprite Sprites;
    11.     public Sprite[] sprites;
    12.  
    13.     //public gameObjects
    14.     public GameObject Correct;
    15.     public GameObject InCorrect;
    16.  
    17.     //private
    18.     private int currentSprite = -1;
    19.     private int currentKeyCode;
    20.     private bool isKeyDownClicked = false;
    21.  
    22.     // Use this for initialization
    23.     void Start () {
    24.         _countDown = GameObject.FindGameObjectWithTag("MainCamera").gameObject.GetComponent<countDownC>();
    25.         sprites = Resources.LoadAll<Sprite>("Sprites/spriteLetters");
    26.        
    27.         SpriteKeyCode[0] = KeyCode.A;
    28.         SpriteKeyCode[1] = KeyCode.B;
    29.         SpriteKeyCode[2] = KeyCode.C;
    30.         SpriteKeyCode[3] = KeyCode.D;
    31.         SpriteKeyCode[4] = KeyCode.E;
    32.         SpriteKeyCode[5] = KeyCode.F;
    33.         SpriteKeyCode[6] = KeyCode.G;
    34.         SpriteKeyCode[7] = KeyCode.H;
    35.         SpriteKeyCode[8] = KeyCode.I;
    36.         SpriteKeyCode[9] = KeyCode.J;
    37.         SpriteKeyCode[10] = KeyCode.K;
    38.         SpriteKeyCode[11] = KeyCode.L;
    39.         SpriteKeyCode[12] = KeyCode.M;
    40.         SpriteKeyCode[13] = KeyCode.N;
    41.         SpriteKeyCode[14] = KeyCode.O;
    42.         SpriteKeyCode[15] = KeyCode.P;
    43.         SpriteKeyCode[16] = KeyCode.Q;
    44.         SpriteKeyCode[17] = KeyCode.R;
    45.         SpriteKeyCode[18] = KeyCode.S;
    46.         SpriteKeyCode[19] = KeyCode.T;
    47.         SpriteKeyCode[20] = KeyCode.U;
    48.         SpriteKeyCode[21] = KeyCode.V;
    49.         SpriteKeyCode[22] = KeyCode.W;
    50.         SpriteKeyCode[23] = KeyCode.X;
    51.         SpriteKeyCode[24] = KeyCode.Y;
    52.         SpriteKeyCode[25] = KeyCode.Z;
    53.  
    54.         Correct.renderer.enabled = false;
    55.         InCorrect.renderer.enabled = false;
    56.  
    57.         /*
    58.         try
    59.         {
    60.             SpriteKeyCode = (KeyCode[])System.Enum.Parse(typeof(KeyCode), sprites[currentSprite].name);
    61.         }
    62.         catch
    63.         {
    64.            
    65.         }
    66.         */
    67.    
    68.     }
    69.    
    70.     // Update is called once per frame
    71.     void Update () {
    72.        
    73.         if (currentSprite == -1 && _countDown.readyToPlay)
    74.         {
    75.             currentSprite = sprites.Length + 1;
    76.             currentSprite = Random.Range(0, sprites.Length);
    77.             currentKeyCode = currentSprite;
    78.             GetComponent<SpriteRenderer>().sprite = sprites[currentSprite];
    79.         }
    80.  
    81.         /*
    82.         if (Input.GetKeyDown(this.SpriteKeyCode[0]))
    83.         {
    84.             Debug.Log("Key is pressed: " + this.sprites[currentSprite].name);
    85.         }
    86.         */
    87.         TurnOffSprite();
    88.     }
    89.  
    90.     void TurnOffSprite()
    91.     {
    92.  
    93.         if (Input.anyKeyDown && _countDown.readyToPlay)
    94.         {
    95.             if (Input.GetKeyDown(SpriteKeyCode[currentKeyCode]))
    96.             {
    97.                 if (InCorrect.renderer.enabled == false)
    98.                 {
    99.                     Correct.renderer.enabled = true;
    100.                 }
    101.             }
    102.             else
    103.             {
    104.                 if(Correct.renderer.enabled == false)
    105.                 {
    106.                     InCorrect.renderer.enabled = true;
    107.                 }
    108.             }
    109.         }
    110.     }
    111. }
    112.  
     
  2. image28

    image28

    Joined:
    Jul 17, 2013
    Posts:
    457
    Code (csharp):
    1. currentSprite = sprites.Length + 1;
    Why the plus one arrays start at zero

    Also your turn off sprite function never turns off any renderer

    Code (CSharp):
    1.    Correct.renderer.enabled=true;
    2.    InCorrect.renderer.enabled = false;
    and remove the if statement

    I might be misunderstanding what you are trying to do though
     
  3. Mateusz Gryczan

    Mateusz Gryczan

    Joined:
    May 10, 2014
    Posts:
    10
    thanks for reply,
    I have one script which draws random letter(sprite) from my sprites and now I want If script finished work - draws random latters, check if input was pressed etc. to go other object. Sorry for my terrible english.



    cuz. When i press correct Input script check others too and I dont know what to do: