# Unity to realize the game

Time：2020-12-4

In this paper, we share the specific code of unity for the implementation of the game, for your reference, the specific content is as follows

Control the ball to rotate

``````using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RotateSelf : MonoBehaviour {
//Rotate 90 degrees per second
public float speed = 90;

// Update is called once per frame
void Update () {
transform.Rotate(new Vector3(0, 0, -speed * Time.deltaTime));
}
}`````` Probe collision detection

``````
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PinHead : MonoBehaviour {

private void OnTriggerEnter2D(Collider2D collision)
{
{
GameObject.Find("GameManager").GetComponent<GameManager>().GameOver();
}
}
}``````

Control the movement position of the needle

``````
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Pin : MonoBehaviour {

public float speed = 5;
private bool isFly = false;
private bool isReach = false;
private Transform startPoint;
private Vector3 targetCirclePos;
private Transform circle;

// Use this for initialization
void Start () {
startPoint = GameObject.Find("StartPoint").transform;
circle = GameObject.FindGameObjectWithTag("Circle").transform;
targetCirclePos = circle.position;
targetCirclePos.y -= 1.55f;
}

// Update is called once per frame
void Update () {
if (isFly == false)
{
if (isReach == false)
{
transform.position = Vector3.MoveTowards(transform.position, startPoint.position, speed * Time.deltaTime);
if (Vector3.Distance(transform.position, startPoint.position) < 0.05f)
{
isReach = true;
}
}
}
else
{
transform.position = Vector3.MoveTowards(transform.position, targetCirclePos, speed * Time.deltaTime);
if(Vector3.Distance( transform.position,targetCirclePos) < 0.05f)
{
transform.position = targetCirclePos;
transform.parent = circle;
isFly = false;
}
}
}

public void StartFly()
{
isFly = true;
isReach = true;
}
}``````

Game management

``````using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

public class GameManager : MonoBehaviour {

private Transform startPoint;
private Transform spawnPoint;
private Pin currentPin;
private bool isGameOver = false;
private int score = 0;
private Camera mainCamera;
public Text scoreText;
public GameObject pinPrefab;
public float speed = 3;

// Use this for initialization
void Start () {
startPoint = GameObject.Find("StartPoint").transform;
spawnPoint = GameObject.Find("SpawnPoint").transform;
mainCamera = Camera.main;
SpawnPin();
}

private void Update()
{
if (isGameOver) return;
if (Input.GetMouseButtonDown(0))
{
score++;
scoreText.text = score.ToString();
currentPin.StartFly();
SpawnPin();
}
}

void SpawnPin()
{
//Instantiation of needle
currentPin = GameObject.Instantiate(pinPrefab, spawnPoint.position, pinPrefab.transform.rotation).GetComponent<Pin>();
}

public void GameOver()
{
if (isGameOver) return;
GameObject.Find("Circle").GetComponent<RotateSelf>().enabled = false;
StartCoroutine(GameOverAnimation());
isGameOver = true;
}

IEnumerator GameOverAnimation()
{
while (true)
{
mainCamera.backgroundColor = Color.Lerp(mainCamera.backgroundColor, Color.red, speed * Time.deltaTime);
mainCamera.orthographicSize = Mathf.Lerp(mainCamera.orthographicSize, 4, speed * Time.deltaTime);
if( Mathf.Abs( mainCamera.orthographicSize-4 )<0.01f)
{
break;
}
yield return 0;
}
yield return new WaitForSeconds(0.2f);
}
}``````

Initial state and running results of the game  More interesting classic game implementation topics, to share with you:

C + + classic games summary

Python classic games summary

Python Tetris game collection

JavaScript classic games are always playing

Java classic games summary

JavaScript classic games summary