0crash0 | DT — Quick Start to Unity volume 1,2,3

Мой блог о том как я постигаю 3D, видео, моушн графику, композитинг.
RSS-лента

DT — Quick Start to Unity volume 1,2,3

Понедельник 8 сентября 2014 | Последнее изменение: Понедельник 8 сентября 2014 18:54

Приветствую, увидев торрент Unity5b1 не смог удержаться чтобы не скачать и не посмотреть что же там интересного, я конечно не являюсь знатоком юнити да и вообщем-то никогда с ним и не работал кроме как просмотр этих трех видео уроков. Хотя кроме сложностей новая версия мне ничего не дала :) . Например с новым GUI, но зато кое-чему научился.
В видео-уроках было рассказано о prefab‘ах, скриптах, анимации, импорте объектов(и анимации), немного о шейдерах и физике.

Вот как выглядят новый splash и project window нового Unity 3d редактора, к томуже с пятой версии редактор стал x64. Что должно повысить производительность разработки игр.


А также появились новые встроенные GUI элементы, которые как я позже узнал появились еще в версии 4.6 .

Чтобы программно получить доступ к GUI нужно сперва подключить библиотеку:

using UnityEngine.UI;

далее чтобы изменять содержимое элемента текст создаем общедоступную переменную в классе и обращямся к ней из каких либо функций изменяя текст:

public Text timerText;
timerText.text = "time left: " + timer.ToString() + " sec";

точно также я менял win/lose, а сам элемент подключаем к переменной уже из интерфейса редактора unity все очень удобно и просто :) .


Вот как я сделал кнопку перезапуска уровня, которая появляется вместе с текстом You win/loose :

Также я еще изменил скрипт хождения/управления камерой чтобы можно было задействовать мышку а также ходить в право и лево:

показать »

using UnityEngine;
using System.Collections;

public class CharacterMovement : MonoBehaviour 
{
	private CharacterController controller;
	public float speed = 6.0f;
	public float turnSpeed = 60.0f;
	private Vector3 moveDirection = Vector3.zero;
	public float gravity = 20.0f;

	private Animator anim;

	float msX=Input.GetAxis("Mouse X");
	
	// Use this for initialization
	void Start () 
	{
		controller = GetComponent <CharacterController>();
		anim = gameObject.GetComponentInChildren<Animator>();
	}
	
	// Update is called once per frame
	void Update () 
	{
		float turn = Input.GetAxis ("Mouse X") - msX;

		float rotationX =  turn * turnSpeed * 0.2f ;

		transform.Rotate(new Vector3 (0, rotationX, 0));

		if(controller.isGrounded)
		{
			float Yangl = transform.rotation.eulerAngles.y*Mathf.PI/180;
			float Hor = Input.GetAxis("Horizontal");
			float Ver = Input.GetAxis ("Vertical");

			float CVerSHor = Ver * Mathf.Cos (Yangl) + Hor * Mathf.Sin (Yangl)*(-1);//FORWARD
			float SVerCHor = Ver * Mathf.Sin (Yangl) + Hor * Mathf.Cos (Yangl); 

			moveDirection.z= CVerSHor*speed; //FORWARD 
			moveDirection.x= SVerCHor*speed;

			anim.SetFloat ("speed", controller.velocity.magnitude);

			if (Input.GetButton("Jump"))
				moveDirection.y = 16.0f;
		}
		controller.Move(moveDirection * Time.deltaTime);

		//Apply gravity
		moveDirection.y -= gravity * Time.deltaTime;
		//msX=Input.GetAxis("Mouse X");
	}

	void OnControllerColliderHit(ControllerColliderHit hit)
	{
		if(hit.gameObject.tag == "boulder")
		{
			hit.rigidbody.AddForce (transform.forward * speed);
		}
	}
	

}

чтобы перевести из радианов в градусы  y*Mathf.PI/180;
эти функции возвращают вектора при нажатии кнопок в завиимости от W/S A/D выдает положительное(W/D) или отрицательное(S/A) значение:

Input.GetAxis("Horizontal");
Input.GetAxis ("Vertical");

так как эти вектора статичны (принимая только -1/1 по одной из осей) то необходимо знать угол поворота персонажа.И использовуя sin и cos для того чтобы сопоставить оси персонажа(динамически вращающиеся) и оси контроллера W/S(вперед/назад) A/D(право/лево) и узнать насколько каждая из осей контроллера сейчас влияет на перемещение персонажа вперед/назад/право/лево

Вообщем то практически все сделано по уроку, кроме того что я сделал камеру за спиной персонажа, переделал управление, использовал новые GUI вот вроди бы и все.

Так как webplayer еще не появился для 5ой беты я решил выложить видео работающей если это можно так назвать игры.

Позже сделаю пост о том как сделал видео в AE.

 

Комментарии к данной записи закрыты.