Search Unity

Problem with controller and points

Discussion in 'Scripting' started by Pierre-skinnerup, Mar 18, 2013.

  1. Pierre-skinnerup

    Pierre-skinnerup

    Joined:
    Aug 20, 2012
    Posts:
    8
    Hey there i have a big problem wich i just cant solve :S i have a controller and some rings i fly through and then it adds points to a GUI text

    here is the controller script

    Code (csharp):
    1. #pragma strict
    2.  
    3. var rotation = 85;
    4. var bankRotation = 15;
    5. var currSpeed = 15.0;
    6. var startSpeed = 15.0;
    7. var stop = 15.0;
    8. var notBegun = 0.0;
    9.  
    10. var delayTime = 0.5;
    11. var acutTime = 0.0;
    12. var currTime = 0.0;
    13.  
    14. var pointField : GUIText;
    15. var timerField : GUIText;
    16. var restartField : GameObject;
    17. var submitField : GameObject;
    18. var highscoreField : GameObject;
    19. var backToMenu : GameObject;
    20. var add1Points = 1;
    21. var add5Points = 5;
    22. var add10Points = 10;
    23. var addTime01 = 3;
    24. var addTime02 = 5;
    25.  
    26. var score : float;
    27. var timer : int;
    28.  
    29. var isDone = false;
    30. var timerBool = false;
    31. var isUsingMouse = false;
    32. var begun = false;
    33. var checkIfBegun = true;
    34.  
    35. var explosionPrefab : Transform;
    36.  
    37. function Awake () {
    38. pointField = GameObject.Find("GUI/txt_Points").GetComponent(GUIText);
    39. timerField = GameObject.Find("GUI/txt_Timer").GetComponent(GUIText);
    40. restartField = GameObject.Find("GUI/Texture_Restart");
    41. submitField = GameObject.Find("GUI/Texture_Submit");
    42. highscoreField = GameObject.Find("GUI/Texture_HighScore");
    43. backToMenu = GameObject.Find("GUI/Texture_BackToMenu");
    44. restartField.transform.position = Vector3(0,45,0);
    45. submitField.transform.position = Vector3(0,45,0);
    46. highscoreField.transform.position = Vector3(0,45,0);
    47. score = 0;
    48. timer = 20;
    49. UpdateText();
    50. }
    51.  
    52. function OnTriggerEnter(collider : Collider) {
    53.     if(collider.gameObject.tag == "Ring1") {
    54.         score += add1Points;
    55.         timer += addTime01;
    56.     }
    57.     if(collider.gameObject.tag == "Ring5") {
    58.         score += add5Points;
    59.         timer += addTime02;
    60.     }
    61.     if(collider.gameObject.tag == "Square") {
    62.         score += add10Points;
    63.         timer += addTime02;
    64.     }
    65.     if(collider.gameObject.tag == "Ground") {
    66.         Instantiate(explosionPrefab, transform.position, transform.rotation);
    67.         restartField.transform.position = Vector3(0,0,0);
    68.         submitField.transform.position = Vector3(0,0,0);
    69.         highscoreField.transform.position = Vector3(0,0,0);
    70.         backToMenu.transform.position = Vector3(0,0,0);
    71.         isDone = true;
    72.         Destroy (gameObject);
    73.     }
    74. }
    75.  
    76. function Update () {
    77.     if(checkIfBegun == true) {
    78.         Begun();
    79.     }
    80.  
    81.     if(isUsingMouse == false) {
    82.     var pitch = Input.GetAxis("Vertical") * rotation;
    83.     var roll = Input.GetAxis("Horizontal") * rotation;
    84.     var bank = Input.GetAxis("Bank") * bankRotation;
    85.    
    86.     pitch *= Time.deltaTime;
    87.     roll *= Time.deltaTime;
    88.     bank *= Time.deltaTime;
    89.    
    90.     transform.Rotate(pitch,0,-roll);
    91.     transform.Rotate(0,roll / 5,0,Space.Self);
    92.     transform.Rotate(0,bank,0,Space.Self);
    93.     }
    94.     else {
    95.     var pitchM = Input.GetAxis("Mouse Y") * rotation;
    96.     var rollM = Input.GetAxis("Mouse X") * rotation;
    97.     var bankM = Input.GetAxis("Bank") * bankRotation;
    98.    
    99.     pitchM *= Time.deltaTime;
    100.     rollM *= Time.deltaTime;
    101.     bankM *= Time.deltaTime;
    102.    
    103.     transform.Rotate(pitchM,0,-rollM);
    104.     transform.Rotate(0,rollM / 5,0,Space.Self);
    105.     transform.Rotate(0,bankM,0,Space.Self);
    106.     }
    107.    
    108.     CheckTimer();
    109.     UpdateText();
    110.     CheckScore();
    111.    
    112.     transform.Translate(0,0,currSpeed * Time.deltaTime);
    113. }
    114.  
    115. function Begun () {
    116.     if(begun == false) {
    117.     rotation = notBegun;
    118.     bankRotation = notBegun;
    119.     currSpeed = notBegun;
    120.     stop = notBegun;
    121.     }
    122.     else {
    123.     rotation = 85;
    124.     bankRotation = 15;
    125.     currSpeed = 15.0;
    126.     stop = 15.0;
    127.     checkIfBegun = false;
    128.     }
    129. }
    130.  
    131. function UpdateText() {
    132.     pointField.text = score.ToString();
    133.     timerField.text = timer.ToString();
    134. }
    135.  
    136. function CheckTimer () {
    137.     if(timer == 0) {
    138.         bankRotation = 0;
    139.         rotation = 0;
    140.         stop = 0;
    141.         currSpeed = 0;
    142.         restartField.transform.position = Vector3(0,0,0);
    143.         submitField.transform.position = Vector3(0,0,0);
    144.         highscoreField.transform.position = Vector3(0,0,0);
    145.         backToMenu.transform.position = Vector3(0,0,0);
    146.         isDone = true;
    147.         Destroy (gameObject);
    148.     }
    149.     if(timerBool == true  timer > 0) {
    150.         timer -= 1;
    151.         timerBool = false;
    152.         yield WaitForSeconds (1);
    153.         timerBool = true;
    154.     }
    155. }
    156. function CheckScore () {
    157.     if(begun == true  isDone == false) {
    158.     currSpeed = startSpeed + score / 4;
    159.     }
    160. }
    i have a collider set to is trigger and witht the tag Ring1 on it

    the problem is that it adds 2 points each time i fly through instead of 1
    how can i solve this problem

    Best Regards

    Pierre skinnerup