Survivelgame писал(а):Ситуация такая, как сделать так, что бы при падении с высоты, игрок получал урон, информации особо нигде нет, но может кто-нибудь всё же поможет. Если будете писать скрипты(или их части), то ипсользуйте по возможности язык C#, он мне больше понятен.
Rpabuj1 писал(а):Survivelgame писал(а):Ситуация такая, как сделать так, что бы при падении с высоты, игрок получал урон, информации особо нигде нет, но может кто-нибудь всё же поможет. Если будете писать скрипты(или их части), то ипсользуйте по возможности язык C#, он мне больше понятен.
Хм... Возникли такие мысли:
1. Когда игрок падает, включать таймер.
2. Когда приземлился, выключать таймер.
3. На основании данных таймера вычислять урон.
4. От значения переменной здоровья вычесть значение урона.
lawsonilka писал(а):Rpabuj1 писал(а):Survivelgame писал(а):Ситуация такая, как сделать так, что бы при падении с высоты, игрок получал урон, информации особо нигде нет, но может кто-нибудь всё же поможет. Если будете писать скрипты(или их части), то ипсользуйте по возможности язык C#, он мне больше понятен.
Хм... Возникли такие мысли:
1. Когда игрок падает, включать таймер.
2. Когда приземлился, выключать таймер.
3. На основании данных таймера вычислять урон.
4. От значения переменной здоровья вычесть значение урона.
а если игрок прыгает или летит почти горизонтально? Если есть ригидбоди то просто можно рассчитывать по velocity.y
Anonymyx писал(а):Синтаксически - все так. Все должно отображаться. Ошибки выдает?
Survivelgame писал(а):Anonymyx писал(а):Синтаксически - все так. Все должно отображаться. Ошибки выдает?
Нет. Но если сделать так:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class falldamage : MonoBehaviour {
public float Ytransform;//что бы получить скорость падения
public Text YtransformText;//вывод её на экране для большего удобства
public float speed;
public Text speedText;
void Update ()
{
speedText.text = "" + speed;
YtransformText.text = "" + Ytransform;//присваиваю скорость к тесксту
speed = GetComponent<Rigidbody>().velocity.y;//здесь её и должен получать, но это не происходит, переменная всегда на 0
Ytransform = transform.position.y;//позиция по y
}
}
То я получаю позицию по y, но скорость так и не получаю. Так бы я мог сделать проверку на то, что если позиция y начала уменьшатся, то создаётся числовая переменная которая вычисляет на какое расстояние падает игрок и когда позиция y перестаёт изменятся, то отнимается здоровье(изменение растояния * урон).
Cr0c писал(а):Очуметь! Плюсовать к стрингу флоат можно! Ytransform.ToString() попробуйте. И про типы данных обновите в памяти.
Рб кешировать желательно.
Cr0c писал(а):Очуметь! Плюсовать к стрингу флоат можно! Ytransform.ToString() попробуйте. И про типы данных обновите в памяти.
Рб кешировать желательно.
Cr0c писал(а):Предлагаю дебагом velocity.y посмотреть в динамике и использовать явное преобразование типов.
Survivelgame писал(а):Я не могу понять, почему переменная TimeAir не увеличивается.
Paul Siberdt писал(а):Survivelgame писал(а):Я не могу понять, почему переменная TimeAir не увеличивается.
Ну, как тут не понять? Это значит, что "лучь с чем-то слталкивается".
Дебажьте свой код, если не можете понять, построчно. ПО-СТРОЧ-НО.
Дебажьте рэйкаст, рисуя луч, дебажьте коллайдеры, выводя логи, дебажьте флаги и условия входа в разные ветви логики.
Сейчас этот форум просматривают: Yandex [Bot] и гости: 18