28.17M
Категория: ПрограммированиеПрограммирование

Сегодня я расскажу о своем проекте

1.

1.Покажу и расскажу как работает механика движения Этот проект был создан мною для проверки своих
2.Покажу механику стрельбы и взрыва астероидов
знаний,
3.Расскажу как происходит спаун и респаун астероидов я вдохновился старой игрой Space invaders и
решил создать
4.Также рассмотрим отнятие жизней
похожую игру в 3D
5.Расскажу про начисления очков

2.

1.Покажу и расскажу как работает
механика движения
Для механики движения я
использовал данный скрипт:
Void Update()
{
float hor =
Input.GetAxis(“Horizontal”)
float
ver=Input.GetAxis(“Vertical”)
Vector3 move=new
Vector3(hor,ver,0)
rb.AddRealativeForce(move *
speed);
rb.AddRealativeForce(rb.velocity);
}
В данном скрипте считываются горизонтальные (A и D) и вертикальные кнопки (W и
S) после чего совмещаю их чтоб игрок мог двигаться по диагонали, после
прописываю строку на плавность движения и замедление на концах

3.

2.Покажу механику стрельбы и взрыва
астероидов
2.Покажу механику стрельбы и взрыва астероидов

4.

2.Покажу механику стрельбы и взрыва
В этом методе происходит выпуск
астероидов
Для этого я использовал данныйе скрипты: лазера и считывание куда он попал
private void Update()
{
ammo += 0.01f;
ammo = Mathf.Min(ammo, 10);
AmmoSlider.value = ammo / 10f;
if(Input.GetKey(KeyCode.Space)&& ammo >= 1)
{
ammo--;
Instantiate(laser, gun.position, gun.rotation);
Ray ray = new Ray(transform.position,
transform.forward);
RaycastHit hit;
if (Physics.Raycast(ray, out hit))
{
if(hit.transform.gameObject.name.Contains("Asteroid"))
{
AsteroidScript asteroid =
hit.transform.GetComponent<AsteroidScript>();
StartCoroutine(shootAsteroid(asteroid,
IEnumerator
shootAsteroid(AsteroidScrip
t asteroid, float dist)
{
Lazer laserScript =
laser.GetComponent<Lazer>()
;
float time = dist /
laserScript.laserSpeed;
yield return new
WaitForSeconds(time);
asteroid.Explode();
playerScore.asteroidDestroy
ed();
Здесь я написал что если лазер
попал по астероиду он вызывает
взрыв или если он пролетает он
пропадает

5.

3.Расскажу как происходит спаун и респаун
астероидов
private IEnumerator spawnAsteroid()
{
while (true)
{
for (int i = 0; i < countPerWave;
i++)
{
Vector3 pos =
transform.position;
float hor = Random.Range(100, 100);
float ver = Random.Range(100, 100);
Vector3 random = new
Vector3(hor, ver, 0);
pos += random;
Instantiate(_asteroid, pos,
transform.rotation);
}
yield return new
WaitForSeconds(_cdTime);
}
Спаун астероидов происходит в корутине IEnumerator в
которой происходит высчитывание рандомного места
положения спауна астероидов в заранее поставленой
зоне,а также высчитывается несколько секунд до
следующей партии

6.

3.Расскажу как происходит спаун и респаун астероидов
Destroy(gameObject, transform.position.z
/ rb.velocity.magnitude * 5f);
Если астероид улетел за зону видимости игрока он
пропадает

7.

4.Также рассмотрим отнятие жизней
if
(other.gameObject.name.Contains("pla
yer"))
{
PlayerHP playerHP =
other.gameObject.GetComponent<Player
HP>();
playerHP.TakeDamage(Mathf.RoundToInt
(size));
Explode();
Игрок получает урон от астероида в зависимости от его размера
(астероид больше = урон больше )
}

8.

5.Расскажу про начисления очков
public TextMeshProUGUI text;
public float score = 0;
public float scorePerSecond = 1f;
public float scorePerAsteroid = 5f;
1 строка : добираемся
до TextMeshPro
2 строка : изначальный счет 0
3 строка : счет в секунду 1
4 строка : счет за уничтоженный тобой
English     Русский Правила