Sunday, 16 September 2012

Danil Vitaliy Kate Alexey Antonina - 1

Code snippets:

Вывод текста в консоль:
Debug.Log("Peter");
Debug.Log("sfgfgdfgd");

C#:

Типі переменніх:
int ( -3, 4, 5, 6 ) - целіе
float ( 2.4f, 4.12f, 5.24f, 0.00134234f ) - дробніе
bool ( true, false ) - правда, ложь

Об'явление переменной:
float x;
int y;
bool z;

Присваивание переменной:
x = 10f;
y = 21;
z = false;

Об'явление с присваиванием:
float x = 3f;
float my = 34f;

int a = 10;
int b = 3;

bool hungry=true;

Условие:
bool condition=true;
if(condition)
{
    Debug.Log("V condition pravda");
}
else
{
   Debug.Log("V condition log");
}

if ( 5 > 1 )
{
     Debug.Log("Capitan skazal pravda");
}

if ( 3>100)
{
   Debug.Log("Eto soobshenie nikogda ne vyveditsa");
}

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

if ( isRain )
{
    if ( hasUmbrella)
    {
          Debug.Log("Took ubrella");
    }
}

Функция без параметра и ничего не возвращает
void MyFunction()
{
    Debug.Log("I can do a lot of things here");
}

MyFunction - имя функции, фигурные скобки { } - тело функции, void - пустота ( функция ничего не возвращает )

Для того чтобы вызвать ничего не возвращающую функцию необходимо написать ее имя и в скобках указать параметры. Если параметров нет то в скобках пустота.
Візов:
void Start()
{
   MyFunction();
}

Функция c параметром и ничего не возвращает
void MyParameteredFunction(float x)
{
    Debug.Log("Parameter is " + x );
}

float x - параметр функции, float - тип, x - имя. Если параметров несколько, то они пишуться через запятую void MyParameteredFunction(float x, int y, bool z)

При вызове функции с параметром в скобках подставляем конкретные данные или другие переменные.
Візов:
void Start()
{
   MyParameteredFunction(2f);
   MyParameteredFunction(3.1f);
   MyParameteredFunction(10f);
   MyParameteredFunction(-3.5f);
}

Функция с параметром и возвращающая значение
float MyParameterReturnFunction(float x)
{
    return x*x;
}

При вызове функции которая возращает неободимо записать результат в какую-то переменную. Для этого обьявляем переменную и сразу ее присваиваем результату функции.
Візов:
void Start()
{
   float a = MyParameterReturnFunction(2f);
   float b = MyParameterReturnFunction(3f);
   float c = MyParameterReturnFunction(10f);
}

Типичніе ошибки с функциями

ТАК ПИСАТЬ НЕЛЬЗЯ

1.
void Start()
{
    void MyFunction()
     {

     }
}

Нельзя писать функцию внутри функции

2.
void MyFunction( 5f, true )
{
 
}
Нельзя писать в описании функции в аргументах конкретніе значения. Для того чтобі візвать функцию с конкретніми значениями нужно насать ее имя и с скобках узакать парметрі например MyFunction( 5f, true ).



Unity

Проверить нажатие клавиши
if ( Input.GetKeyDown("a")) // a - клавиша на клавиатуре с маленькой букві
{
    Debug.Log("Key A was pressed");
}

Обьявление вектора
Vector3 myVector = new Vector3( 2f, 3f, 4f );

Поставить обьект в определенную точку
Vector3 pos = new Vector3( 0f, 3f, 10f );
this.transform.position = pos;

Сдвинуть обьект
Vector3 dir = new Vector3( 10f, 0f, 0f ); //вправо на 10 метров
this.transform.position += dir;

Записать в переменную нашу текущую позицию и проверить ее
Vector3 pos = this.transform.position;

if ( pos.x > 10f )
{
   Debug.Log("Our current position by X age is bigger then 10 meters");
}

Поиск обьекта по имени
GameObject enemyGo = GameObject.Find("Enemy"); // Enemy єто имя обьекта
Debug.Log( enemyGo ); // если обьект не біл найден, то в enemyGo будет null

Получить координаті найденного обьекта
GameObject enemyGo = GameObject.Find("Enemy"); // Enemy єто имя обьекта
Vector3 enemyPos = enemyGo.transform.position;

Удалить найденній обьект
GameObject enemyGo = GameObject.Find("Enemy"); // Enemy єто имя обьекта
Destroy( enemyGo );

Найти расстояние от текушего до найденного обьекта
GameObject enemyGo = GameObject.Find("Enemy"); // Ищем обьект по имени
Vector3 ourPosition = this.transform.position; // Записіваем в переменную нашу координату
Vector3 enemyPosition = enemyGo.transform.position; // Записіваем координату врага
Vector3 distaceToEnemy = Vector3.Distance( ourPosition, enemyPosition ); // Находим расстояние и записіваем в переменную
Debug.Log( distanceToEnemy );

Получить другой скрипт в текущем обьекте
MySecondScript mss = this.GetComponent<MySecondScript>();
mss.CallSomeFunction();

где MySecondScript - название второго скрипта

Получить другой обьект по имени, получить скприт на нем и вызвать функцию
GameObject otherGo = GameObject.Find("OtherObject");
SomeScript ss = otherGo.GetComponent<SomeScript>();
ss.MyFunction();

где OtherObject - название геймобжекта
SomeScript - название скрипта
ss - название переменной в которой храниться скрипт
MyFunction - название функции которую візіваем

Получить другой обьект по имени, получить скприт и в нем изменить переменную
GameObject otherGo = GameObject.Find("OtherObject");
SomeScript ss = otherGo.GetComponent<SomeScript>();
ss.SomeVariable += 10;

где SomeVariable - название переменной, которую изменяем
ss - название переменной в которой храниться скрипт

Создать обьект и установить в точку
GameObjct clone = GameObject.Instantiate(prototype); //создать обьект
clone.transform.position = new Vector3( 10f, 5f, 0f ); //установить в точку

prototype - заготовка, по которой будет создан обьект ( GameObject )
clone - созданный обьект

Protype может быть один, а клонов может быть много. Например протитип это пуля. Но стреляя очередями будет очень много пуль. Каждая конкретная пуля в такой очереди это клон.

Случайное число
float mr =  Random.Range( -2f, 10,5f );
случайное число от -2 до 10.5

Случайный вектор 3
Vector3 mrv = Random.insideUnitSphere;

случайное вектор с координатами внутри сферы радиусом 1м

Таймер
public class MyScript : Monobehaviour
{
    float mTimer = 0f;

    void Start()
    {
     
    }

    void Update()
    {
        mTimer += Time.deltaTime; // в переменной mTimer прибавляем время в секундах

       if ( mTimer > 4f ) // если прошло 4 секунды
       {
            Debug.Log("3 second have passed"); //написать в консоль текст
            mTimer = 0f; //обнуляем таймер до 0 что начать заново отсчет
       }
    }
}

Переместить обьект в точку при помощи интерполяции Lerp
Vector3 tar = new Vector3( 5f, 10f, 0f ); //точка цели
this.transform.position = Vector3.Lerp( this.transform.position, tar, Time.deltatime );

где
tar - точка цели куда двигаем обьект
Vector3.Lerp( this.transform.position, tar, Time.deltatime ); - интерполяция между 2мя векторами с нелинейной скоростью

Переместить обьект в точку при помощи интерполяции MoveTowards
Vector3 t = new Vector3( 7f, 1f, 0f ); //точка цели
this.transform.position = Vector3.MoveTowards( this.transform.position, t, Time.deltatime );

t - точка цели куда двигаем обьект
Vector3.MoveTowards( this.transform.position, tar, Time.deltatime ); - интерполяция между 2мя векторами с линейной скоростью

Сохранить данніе
int scores = 10;
PlayerPrefs.SetInt( "KeyName", scores );

Загрузить данніе
int scores;
scores = PlayerPrefs.GetInt( "KeyName");

Загрузить данніе если ничего не было сохранено
int scores;
scores = PlayerPrefs.GetInt( "KeyName", -1 );
где -1, то значение, которое вернет функция если такой ключ не был сохранен ранее

Удалить ключ
PlayerPrefs.RemoveKey( "KeyName");

Удалить все ключи
PlayerPrefs.DeleteAll();


Математика:

2х мерніе оси координат:


Поиск направления: