Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections.Generic;
- using UnityEngine;
- public class Game : MonoBehaviour
- {
- public float speed;
- public float updateTimer; //Timer interval at which snake position is updated
- char direction; //[U]p, [D]own, [R]ight, [L]eft]
- public GameObject food;
- public GameObject part;
- List<GameObject> snake;
- void Start ()
- {
- direction = 'R';
- snake = new List<GameObject>();
- part = Instantiate(part, new Vector3(0, 0, 0), part.transform.rotation, gameObject.transform);
- snake.Add(part);
- SpawnFood();
- InvokeRepeating("Move", 0, 0.1f);
- }
- void Update ()
- {
- GetInput();
- if (Mathf.Abs(snake[0].transform.position.x - food.transform.position.x) < 1
- && Mathf.Abs(snake[0].transform.position.y - food.transform.position.y) < 1)
- Eat();
- Die();
- }
- void Move()
- {
- Vector2 nextPos = new Vector2();
- switch (direction)
- {
- case 'U':
- nextPos = new Vector2(snake[0].transform.position.x, snake[0].transform.position.y + 1);
- break;
- case 'R':
- nextPos = new Vector2(snake[0].transform.position.x + 1, snake[0].transform.position.y);
- break;
- case 'D':
- nextPos = new Vector2(snake[0].transform.position.x, snake[0].transform.position.y - 1);
- break;
- case 'L':
- nextPos = new Vector2(snake[0].transform.position.x - 1, snake[0].transform.position.y);
- break;
- }
- for (int i = snake.Count - 1; i > 0; i--)
- snake[i].transform.position = snake[i - 1].transform.position;
- snake[0].transform.position = nextPos;
- }
- void GetInput()
- {
- if (Input.GetKeyDown(KeyCode.D) && direction != 'L')
- direction = 'R';
- if (Input.GetKeyDown(KeyCode.A) && direction != 'R')
- direction = 'L';
- if (Input.GetKeyDown(KeyCode.W) && direction != 'D')
- direction = 'U';
- if (Input.GetKeyDown(KeyCode.S) && direction != 'U')
- direction = 'D';
- }
- void Eat()
- {
- snake.Add(Instantiate(part, transform));
- SpawnFood();
- }
- void SpawnFood()
- {
- food.transform.position = new Vector3(Random.Range(-20, 20), Random.Range(-11, 12), food.transform.position.z);
- }
- void Die()
- {
- //Borders
- if (snake[0].transform.position.x < -21.5f ||
- snake[0].transform.position.x > 21.5 ||
- snake[0].transform.position.y < -12 ||
- snake[0].transform.position.y > 12)
- Destroy(gameObject);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement