Реших да науча Unity след няколко месеца. И така, проучих много и попаднах на уебсайта learn.unity.com. Урокът по основните неща на Unity е наистина забавен. Този урок дава само основни неща за това какво е 3d, как да използвате Unity и т.н. След това завърших този урок и започнах друг, който е курс по програмиране за младши. Първата част беше готова и това е първият блог от моя опит.

Създаването на проект е наистина лесно. Курсът по програмиране за младши започва с основна информация. Директно започва да преподава с това как работите върху Unity. В първия проект той даде папка за тези прости активи. Tutorial иска да импортира тази папка във вашия прототипен проект. Когато частта за импортиране приключи, можете да научите как да използвате обекти и материали в Unity. Например, можете да носите предмет в сцената. В папката с активи импортираната основна среда също има допълнителен актив като превозни средства.

В края на това идва кодиращата част. Мисля, че проектът „Hello World“ премества обект с код. Първо, урокът учи, че се създава папка „скриптове“. Всички скриптове ще бъдат създадени в тази папка. Когато щракнете с десния бутон върху секцията Project, изберете да създадете и изберете C# Script. То е като;

Create 'Scripts' folder -> go 'Scripts' folder -> right click -> create -> C# Script

Първоначалният код се записва автоматично. Директно създава публичен клас с име, което е името на файла. И също така създайте две функции в този клас. Една от функциите е Старт, а друга е Актуализация. Можете да видите кода по-долу.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour {     
  // Start is called before the first frame update  
   
  void Start()
  {
  }
   
  // Update is called once per frame     
  void Update()     
  {             
  }
 }

След това видео серията продължава с преместване на някои обекти с кодиране. Всъщност е много лесно. Unity помисли всичко за потребителите. Някои ключови думи ни помагат да напишем някои ефективни кодове. В този пример можем да използваме класа „transform“. Вътре в трансформацията функцията Translate на класа ни помага да преместим обект в определена посока. Когато кодът за запазване и обратно към unity форма ide. Основно е да приложите този код към обект. Просто плъзнете и пуснете раздела Инспектор.

void Update() 
{
   transform.Translate(Vector3.forward)        
}

Но това е толкова бързо. Трябва да забавим, така че умножението с (Time.deltaTime * 20) да повлияе на скоростта ни.

void Update() 
{
   transform.Translate(Vector3.forward * Time.deltaTime * 20) 
}

Освен това добавих компонента Rigidbody с помощта на бутона за добавяне на компонент под инспектора. Това води до физически движения върху обекта като гравитацията. И идва най-добрият момент, натиснете бутона за възпроизвеждане 🙂 Превозното средство директно започва да се движи направо и основната камера не следва колата. И така, трябва да добавим код към камерата.

Нека създадем друг файл със скрипт, чието име е „FollowPlayer“. Тук трябва да помислим как камерата да следва автомобила. Отговорът е, че превозните средства и позицията на камерата трябва да са близо и трябва да се движат заедно. По този начин получаването на позицията на автомобила и предоставянето на тази позиция на камерата е част от решението.

// in FollowPlayer script
public GameObject player;
void Update() 
{
  transform.potision = player.transform.position; 
}

Когато скриптът FollowPlayer се интегрира в камерата, секцията Player се появява автоматично, защото в кода ние създаваме GameObject player. След това трябва да променим името на колата с превозното средство и полето Player с плъзгане и пускане. Сега камерата следва автомобила, защото позициите са еднакви. Трябва да разделим тези двете.

Отворете FollowPlayer и добавете нов Vector3 за разделяне на разстояние с превозно средство и камера. И променете името на функцията Update на LateUpdate за гладкост. Тогава нека отидем на Unity и натиснете бутона за възпроизвеждане.

// in FollowPlayer script 
public GameObject player;
private Vector3 offset = new Vector3(0,5,-7);
void LateUpdate()
{
  transform.potision = player.transform.position + offset; 
}

Трябва да получим данни от потребителя, за да преместим това превозно средство. Освен това завиването е важна идея за една кола. Нека добавим тези части. В урока се казва, че PlayerController се нуждае от повече код за обръщане. Първо отворете скрипта PlayerController и добавете public float turnSpeed ​​и използвайте метода transform.Translate() с параметър Vector3.right * Time.deltaTime * turnSpeed.

public float speed = 20;
public float turnSpeed;

void Update()
{
	transform.Translate(Vector3.forward * Time.deltaTime * speed);
	transform.Translate(Vector3.right * Time.deltaTime * turnSpeed);
}

След това превозното средство се нуждае от данни от потребителя, за да се движи надясно и наляво. Така че програмата трябва да приеме въведени данни. Input.GetAxis(“Horizontal”) е мощен метод за предприемане на всяко действие от потребителя. В този случай нашият ляв и десен ключ са „a“ и „d“. Можете да промените хоризонталния вход в Unity или в Code.

public float speed = 20;
public float turnSpeed;
public float horizontalInput;
void Update()
{
	horizontalInput = Input.GetAxis("Horizontal");
	transform.Translate(Vector3.forward * Time.deltaTime * speed);
	transform.Translate(Vector3.right * Time.deltaTime * turnSpeed);
}

Сега превозното средство може да завива надясно и наляво, но не изглежда добре, защото само оста x променя превозното средство, така че не може да се върти. Също така стартиране директно без натискане на бутон. Трябва да добавим и малко вертикално движение. Нека започнем с вертикално, то е същото като хоризонтално.

public float speed = 20;
public float turnSpeed;
public float horizontalInput;
public float forwardInput;
void Update()
{
	horizontalInput = Input.GetAxis("Horizontal");
	forwardInput = Input.GetAxis("Vertical");
	transform.Translate(Vector3.forward * Time.deltaTime * speed * 	forwardInput);
	transform.Translate(Vector3.right * Time.deltaTime * turnSpeed);
}

и второ, променете функцията transform.Translate(Vector3.right * Time.deltaTime * turnSpeed) на transform.Rotate.

public float speed = 20;
public float turnSpeed;
public float horizontalInput;
public float forwardInput;
void Update()
{
	horizontalInput = Input.GetAxis("Horizontal");
	forwardInput = Input.GetAxis("Vertical");
	transform.Translate(Vector3.forward * Time.deltaTime * speed * 	forwardInput);
	transform.Rotate(Vector3.up, Time.deltaTime * turnSpeed * horizontalInput);
}

реф

https://learn.unity.com/pathway/junior-programmer