Чем этот скрипт отличается от JS скрипта?
1. В нём нет ошибок
2. Я его буду обновлять
3. Тут есть подсказки =3
1. Создаём "C# Script" с именем "Crouch"
2. Удаляем в нём весь код
3. И вставляем туда этот скрипт(v.1.0):
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
public class Crouch : MonoBehaviour
{
public CharacterController Controller; // Объявляем контроллер
private Vector3 NewPos; // Сюда будем сохранять позицию
private int NewHeight = 0; // На сколько будем приседать, не советую изменять.
private bool Check = false; // Присели мы или нет
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
NewPos = new Vector3(transform.position.x, transform.position.y + 0.6f, transform.position.z);
// Загружаем позицию
if (Controller.isGrounded && Input.GetKeyDown (KeyCode.LeftControl))
//Если мы на земле и мы нажали левый ctrl
{
if (Check == false) // Если мы не сидим
{
On(); // То выполняем функцию "On" описанную ниже
}
else if (Check == true) // Если мы сидим
{
Off(); //То выполняем функцию "Off" описанную ниже(логично же, не правда ли?)
}
}
if (Input.GetKey (KeyCode.LeftShift)) // Если зажат L.Shift
{
if (Check == true) // Если мы сидим
{
Off();
}
}
}
void On() // Функция "On"
{
Check = true; // Загружаем в бул, то что мы сидим, то-есть "true"
Controller.height = NewHeight;
// Понижаем контроллер(Если у нас height контроллера была равна "2", то теперь будет равна значению "NewHeight")
}
void Off() // Функция "Off"
{
Check = false;
Controller.height += 2; // Тут добавляем к значению "height" 2 единицы
transform.position = NewPos; // Загружаем позицию
}
}
using System.Collections;
public class Crouch : MonoBehaviour
{
public CharacterController Controller; // Объявляем контроллер
private Vector3 NewPos; // Сюда будем сохранять позицию
private int NewHeight = 0; // На сколько будем приседать, не советую изменять.
private bool Check = false; // Присели мы или нет
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
NewPos = new Vector3(transform.position.x, transform.position.y + 0.6f, transform.position.z);
// Загружаем позицию
if (Controller.isGrounded && Input.GetKeyDown (KeyCode.LeftControl))
//Если мы на земле и мы нажали левый ctrl
{
if (Check == false) // Если мы не сидим
{
On(); // То выполняем функцию "On" описанную ниже
}
else if (Check == true) // Если мы сидим
{
Off(); //То выполняем функцию "Off" описанную ниже(логично же, не правда ли?)
}
}
if (Input.GetKey (KeyCode.LeftShift)) // Если зажат L.Shift
{
if (Check == true) // Если мы сидим
{
Off();
}
}
}
void On() // Функция "On"
{
Check = true; // Загружаем в бул, то что мы сидим, то-есть "true"
Controller.height = NewHeight;
// Понижаем контроллер(Если у нас height контроллера была равна "2", то теперь будет равна значению "NewHeight")
}
void Off() // Функция "Off"
{
Check = false;
Controller.height += 2; // Тут добавляем к значению "height" 2 единицы
transform.position = NewPos; // Загружаем позицию
}
}
4. Закидываем этот скрипт к Controller'у
5. И добавляем в наш Controller "First Person Controller"
MINI UPDATE v.1.1
Что нового? Ускорил работу скрипта!
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
public class Crouch : MonoBehaviour
{
public CharacterController Controller; // Объявляем контроллер
private Vector3 NewPos; // Сюда будем сохранять позицию
private int NewHeight = 0; // На сколько будем приседать, не советую изменять.
private bool Check = false; // Присели мы или нет
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
NewPos = new Vector3(transform.position.x, transform.position.y + 0.6f, transform.position.z);
// Загружаем позицию
if (Controller.isGrounded && Input.GetKeyDown (KeyCode.LeftControl))
//Если мы на земле и мы нажали левый ctrl
{
if (!Check) // Если мы не сидим
{
On(); // То выполняем функцию "On" описанную ниже
}
else if (Check) // Если мы сидим
{
Off(); //То выполняем функцию "Off" описанную ниже(логично же, не правда ли?)
}
}
if (Input.GetKey (KeyCode.LeftShift)) // Если зажат L.Shift
{
if (Check) // Если мы сидим
{
Off();
}
}
}
void On() // Функция "On"
{
Check = true; // Загружаем в бул, то что мы сидим, то-есть "true"
Controller.height = NewHeight;
// Понижаем контроллер(Если у нас height контроллера была равна "2", то теперь будет равна значению "NewHeight")
}
void Off() // Функция "Off"
{
Check = false;
Controller.height += 2; // Тут добавляем к значению "height" 2 единицы
transform.position = NewPos; // Загружаем позицию
}
}
using System.Collections;
public class Crouch : MonoBehaviour
{
public CharacterController Controller; // Объявляем контроллер
private Vector3 NewPos; // Сюда будем сохранять позицию
private int NewHeight = 0; // На сколько будем приседать, не советую изменять.
private bool Check = false; // Присели мы или нет
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
NewPos = new Vector3(transform.position.x, transform.position.y + 0.6f, transform.position.z);
// Загружаем позицию
if (Controller.isGrounded && Input.GetKeyDown (KeyCode.LeftControl))
//Если мы на земле и мы нажали левый ctrl
{
if (!Check) // Если мы не сидим
{
On(); // То выполняем функцию "On" описанную ниже
}
else if (Check) // Если мы сидим
{
Off(); //То выполняем функцию "Off" описанную ниже(логично же, не правда ли?)
}
}
if (Input.GetKey (KeyCode.LeftShift)) // Если зажат L.Shift
{
if (Check) // Если мы сидим
{
Off();
}
}
}
void On() // Функция "On"
{
Check = true; // Загружаем в бул, то что мы сидим, то-есть "true"
Controller.height = NewHeight;
// Понижаем контроллер(Если у нас height контроллера была равна "2", то теперь будет равна значению "NewHeight")
}
void Off() // Функция "Off"
{
Check = false;
Controller.height += 2; // Тут добавляем к значению "height" 2 единицы
transform.position = NewPos; // Загружаем позицию
}
}