Типы данных

Содержание

Слайд 2

Переменные

Переменные

Слайд 3

Типы данных Int Float Bool String

Типы данных

Int
Float
Bool
String

Слайд 4

Целочисленные типы данных

Целочисленные типы данных

Слайд 5

Вещественные типы данных Десятичный тип данных decimal предназначен для применения в

Вещественные типы данных
Десятичный тип данных
decimal предназначен для применения в финансовых
расчетах
разрядность 128

бит 1*10-28 … 7,9*10+28.
позволяет представить числа с точностью до 28 (а иногда и
29) десятичных разрядов
Слайд 6

Задание значения переменной при описании

Задание значения переменной при описании

Слайд 7

Логический тип данных bool принимает значения true и false Можно написать

Логический тип данных

bool принимает значения true и false
Можно написать
if (e=true)

{}
А можно
if e {}
Слайд 8

Подпрограммы void Start () { … } void Update () { …}

Подпрограммы

void Start () {
… }
void Update () {
…}

Слайд 9

Условный оператор if ( условие ) { } else { }

Условный оператор

if ( условие ) {
}
else {
}
if transform.position.x > 10 {
Destroy(gameObject);
}

Слайд 10

Rigidbody (Твердое тело) Rigidbodies позволяют вашим GameObjects действовать под контролем физики.

Rigidbody (Твердое тело)

Rigidbodies позволяют вашим GameObjects действовать под контролем физики.

Слайд 11

Коллайдеры тип компонентов, которые должны быть добавлены наряду с твёрдыми телами,

Коллайдеры

тип компонентов, которые должны быть добавлены наряду с твёрдыми телами, чтобы

задействовать столкновения. Если два твёрдых тела врезаются друг в друга, физический движок не будет просчитывать столкновение, пока к обоим объектам не будет назначен коллайдер. Твёрдые тела не имеющие коллайдеров будут просто проходить сквозь друг друга при просчёте столкновений.
коллайдеры определяют физические границы твёрдого тела
Слайд 12

О чем мы говорили сегодня? https://quizizz.com/admin/quiz/5c9ef62559999a001bd6e186/

О чем мы говорили сегодня?

https://quizizz.com/admin/quiz/5c9ef62559999a001bd6e186/

Слайд 13

Стрельба путем бросания лучей public class Scr3 : MonoBehaviour { private

Стрельба путем бросания лучей

public class Scr3 : MonoBehaviour {
private Camera

_camera;
void Start () {
_camera = GetComponent();
}
void Update () {
if (Input.GetMouseButtonDown(0)) {
Vector3 point = new Vector3(_camera.pixelWidth / 2, _camera.pixelHeight / 2, 0);
Ray ray = _camera.ScreenPointToRay(point);
RaycastHit hit;
if (Physics.Raycast(ray, out hit)) {
Debug.Log("Hit" + hit.point);
}
}
}
}
Слайд 14

Добавление визуальных индикаторов для попаданий if (Physics.Raycast(ray, out hit)) { StartCoroutine(SphereIndicator(hit.point));

Добавление визуальных индикаторов для попаданий

if (Physics.Raycast(ray, out hit)) {
StartCoroutine(SphereIndicator(hit.point));

}
}
}
private IEnumerator SphereIndicator(Vector3 pos) {
GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
sphere.transform.position = pos;
yield return new WaitForSeconds(1);
Destroy(sphere);
}
}
Слайд 15

Создаем индикатор для прицеливания void Start () { _camera = GetComponent

Создаем индикатор для прицеливания

void Start () {
_camera = GetComponent();
Cursor.lockState

= CursorLockMode.Locked;
Cursor.visible = false;
}
private void OnGUI()
{
int size = 12;
float posX = _camera.pixelWidth / 2 - size / 4;
float posY = _camera.pixelHeight / 2 - size / 2;
GUI.Label(new Rect(posX, posY, size, size), "*");
}
Слайд 16

Создаем активные цели Создайте куб (1,2,1), поместите его в точку (0,1,0).

Создаем активные цели

Создайте куб (1,2,1), поместите его в точку (0,1,0).
Дайте ему

имя Enemy
Создайте сценарий ReactiveTarget и присоедините его к объекту.
Слайд 17

Определяем точку попадания if (Physics.Raycast(ray, out hit)) { GameObject hitObject =

Определяем точку попадания

if (Physics.Raycast(ray, out hit))
{
GameObject hitObject =

hit.transform.gameObject;
ReactiveTarget target = hitObject.GetComponent();
if (target != null)
{
Debug.Log("Target hit");
}
else
{
StartCoroutine(SphereIndicator(hit.point));
}
} } }
Слайд 18

Уведомляем цель о попадании if (target != null) { target.ReactToHit(); } else { StartCoroutine(SphereIndicator(hit.point));

Уведомляем цель о попадании

if (target != null)
{
target.ReactToHit();
}

else
{
StartCoroutine(SphereIndicator(hit.point));
Слайд 19

Сценарий ReactiveTarget, реализующий смерть врага при попадании public class ReactiveTarget :

Сценарий ReactiveTarget, реализующий смерть врага при попадании

public class ReactiveTarget : MonoBehaviour

{
public void ReactToHit() {
StartCoroutine(Die());
}
private IEnumerator Die()
{
this.transform.Rotate(-75, 0, 0);
yield return new WaitForSeconds(1.5f);
Destroy(this.gameObject);
}
}
Слайд 20

Базовый искусственный интеллект для перемещения по сцене

Базовый искусственный интеллект для перемещения по сцене

Слайд 21

public class WanderingAI : MonoBehaviour { public float speed = 3.0f;

public class WanderingAI : MonoBehaviour {
public float speed = 3.0f;

public float obstacleRange = 5.0f;
void Update () {
transform.Translate(0, 0, speed * Time.deltaTime);
Ray ray = new Ray(transform.position, transform.forward);
RaycastHit hit;
if (Physics.SphereCast(ray, 0.75f, out hit)) {
if (hit.distance < obstacleRange) {
float angle = Random.Range(-110, 110);
transform.Rotate(0, angle, 0);
} } } }
Слайд 22

Слежение за состоянием персонажа (WanderingAI) private bool _alive; void Start ()

Слежение за состоянием персонажа (WanderingAI)

private bool _alive;
void Start () {
_alive

= true;
}
void Update () {
if (_alive)
{
transform.Translate(0, 0, speed * Time.deltaTime);
}
… }}
//дописать в конце прграммы
public void SetAlive(bool alive) {
_alive = alive;
}

Персонаж жив

Открытый метод, позволяющий внешнему коду действовать на «живое» состояние

Слайд 23

ReactiveTarget сообщает сценарию WanderingAI, когда наступает смерть (дописываем в ReactiveTarget) public

ReactiveTarget сообщает сценарию WanderingAI, когда наступает смерть (дописываем в ReactiveTarget)

public void

ReactToHit() {
WanderingAI behavior = GetComponent();
if (behavior != null) {
behavior.SetAlive(false);
}
StartCoroutine(Die());
}

Проверяем присоединен ли к персонажу сценарий WanderingAI

Слайд 24

Что такое шаблон экземпляров? Это полностью сформированный игровой объект (с уже

Что такое шаблон экземпляров?

Это полностью сформированный игровой объект (с уже присоединенными

компонентами), существующий не внутри конкретной сцены, а в виде ресурса, который может быть скопирован в любую сцену.
Копии объектов могут создаваться вручную и порождаться кодом
Слайд 25

Увеличение количества врагов

Увеличение количества врагов

Слайд 26

Получится вот так… После удаляем его из Hierarchy

Получится вот так… После удаляем его из Hierarchy

Слайд 27

К какому объекту присоединить сценарий, размножающий врагов?

К какому объекту присоединить сценарий, размножающий врагов?

Слайд 28

Создаем пустой объект. Даем ему имя Controller Пишем сценарий SceneController, порождающий

Создаем пустой объект. Даем ему имя Controller Пишем сценарий SceneController, порождающий экземпляры

врагов

public class SceneController : MonoBehaviour {
[SerializeField] private GameObject enemyPrefab;
private GameObject _enemy;
void Update () {
if (_enemy == null) {
_enemy = Instantiate(enemyPrefab) as GameObject;
_enemy.transform.position = new Vector3(0, 1, 0);
float angle = Random.Range(0, 360);
_enemy.transform.Rotate(0, angle, 0);
} } }

Сериализованная переменная для связи с объектом-шаблоном

Закрытая переменная для слежения за экземпляром врага в сцене

Порождаем нового врага только если в сцене враги отсутствуют

Метод, копирующий объект-шаблон

Слайд 29

Присоедините сценарий SceneController к пустому объекту Controller. Перетащите шаблон врага на пустое поле переменной

Присоедините сценарий SceneController к пустому объекту Controller. Перетащите шаблон врага на пустое

поле переменной
Слайд 30

Получится так

Получится так

Слайд 31

Стрельба Создайте шар Переименуйте его в Fireball Создайте новый сценарий с

Стрельба

Создайте шар
Переименуйте его в Fireball
Создайте новый сценарий с именем Fireball

и присоедините его к сфере
Создайте материал flame. Выберите для него оранжевый цвет и поменяйте параметр Emission на 0.3, что бы сделать материал более ярким.
Превращаем наш огненный шар в шаблон, перетащив его со вкладки Hierarchy на вкладку Project.
Слайд 32

Что бы код распознавал игрока, создадим сценарий PlayerCharacter (для игрока)

Что бы код распознавал игрока, создадим сценарий PlayerCharacter (для игрока)

Слайд 33

Откроем сценарий WanderingAI … [SerializeField] private GameObject fireballPrefab; private GameObject _fireball;

Откроем сценарий WanderingAI


[SerializeField] private GameObject fireballPrefab;
private GameObject _fireball; //стилизованная переменная для

связи с объектом шаблоном

if (Physics.SphereCast(ray, 0.75f, out hit)) {
GameObject hitObject = hit.transform.gameObject;
if (hitObject.GetComponent < PlayerCharacter>())
{
if (_fireball == null) {
_fireball = Instantiate(fireballPrefab) as GameObject;
_fireball.transform.posotion = transform.TransformPoint(Vector3.forward * 1.5f);
_fireball.transform.rotation = transform.rotation
}
}
else
if (hit.distance < obstacleRange) {

Слайд 34

Щелкните на шаблоне врага в вкладке Project. В Inspector появятся его

Щелкните на шаблоне врага в вкладке Project. В Inspector появятся его

свойства. Перетащите шаблон огненного шара со вкладки Project на поле Fireball Prefab панели Inspector
Слайд 35

Сценарий Fireball, реагирующий на столкновения public class Fireball : MonoBehaviour {

Сценарий Fireball, реагирующий на столкновения

public class Fireball : MonoBehaviour {
public

float speed = 10.0f;
public int damege = 1;
void Update () {
transform.Translate(0, 0, speed * Time.deltaTime);
}
private void OnTriggerEnter(Collider other)
{
PlayerCharacter player = other.GetComponent();
if (player != null) {
Debug.Log("Player hit");
}
Destroy(this.gameObject);
}
}

Эта функция вызывается автоматически при столкновении объекта

Слайд 36

Что бы сработал тригер Установить флажок Is Triggrer в разделе Sphere

Что бы сработал тригер

Установить флажок Is Triggrer в разделе Sphere Collider
Добавьте

огненному шару компонент RigidBody и сбросьте у него флажок Use Gravity
Слайд 37

Заставим игрока реагировать на попадания (сценарий PlayerCharacter) pivate int _health; void

Заставим игрока реагировать на попадания (сценарий PlayerCharacter)

pivate int _health;
void Start ()

{
_health = 5;
}
public void Hurt (int damage){
_health -=damage;
Debug.Log(“Здоровье: “ + _health);
}
}