Advertisement
Guest User

Untitled

a guest
Feb 20th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.75 KB | None | 0 0
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3.  
  4. public class Game : MonoBehaviour
  5. {
  6. public float speed;
  7. public float updateTimer; //Timer interval at which snake position is updated
  8. char direction; //[U]p, [D]own, [R]ight, [L]eft]
  9.  
  10. public GameObject food;
  11. public GameObject part;
  12. List<GameObject> snake;
  13.  
  14. void Start ()
  15. {
  16. direction = 'R';
  17.  
  18. snake = new List<GameObject>();
  19. part = Instantiate(part, new Vector3(0, 0, 0), part.transform.rotation, gameObject.transform);
  20. snake.Add(part);
  21.  
  22. SpawnFood();
  23. InvokeRepeating("Move", 0, 0.1f);
  24. }
  25.  
  26. void Update ()
  27. {
  28. GetInput();
  29.  
  30. if (Mathf.Abs(snake[0].transform.position.x - food.transform.position.x) < 1
  31. && Mathf.Abs(snake[0].transform.position.y - food.transform.position.y) < 1)
  32. Eat();
  33.  
  34.  
  35. Die();
  36. }
  37.  
  38. void Move()
  39. {
  40. Vector2 nextPos = new Vector2();
  41.  
  42. switch (direction)
  43. {
  44. case 'U':
  45. nextPos = new Vector2(snake[0].transform.position.x, snake[0].transform.position.y + 1);
  46. break;
  47. case 'R':
  48. nextPos = new Vector2(snake[0].transform.position.x + 1, snake[0].transform.position.y);
  49. break;
  50. case 'D':
  51. nextPos = new Vector2(snake[0].transform.position.x, snake[0].transform.position.y - 1);
  52. break;
  53. case 'L':
  54. nextPos = new Vector2(snake[0].transform.position.x - 1, snake[0].transform.position.y);
  55. break;
  56. }
  57.  
  58. for (int i = snake.Count - 1; i > 0; i--)
  59. snake[i].transform.position = snake[i - 1].transform.position;
  60.  
  61. snake[0].transform.position = nextPos;
  62. }
  63.  
  64. void GetInput()
  65. {
  66. if (Input.GetKeyDown(KeyCode.D) && direction != 'L')
  67. direction = 'R';
  68. if (Input.GetKeyDown(KeyCode.A) && direction != 'R')
  69. direction = 'L';
  70. if (Input.GetKeyDown(KeyCode.W) && direction != 'D')
  71. direction = 'U';
  72. if (Input.GetKeyDown(KeyCode.S) && direction != 'U')
  73. direction = 'D';
  74. }
  75.  
  76. void Eat()
  77. {
  78.  
  79. snake.Add(Instantiate(part, transform));
  80. SpawnFood();
  81. }
  82.  
  83. void SpawnFood()
  84. {
  85. food.transform.position = new Vector3(Random.Range(-20, 20), Random.Range(-11, 12), food.transform.position.z);
  86. }
  87.  
  88. void Die()
  89. {
  90. //Borders
  91. if (snake[0].transform.position.x < -21.5f ||
  92. snake[0].transform.position.x > 21.5 ||
  93. snake[0].transform.position.y < -12 ||
  94. snake[0].transform.position.y > 12)
  95. Destroy(gameObject);
  96. }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement