ПОМОГИТЕ!(РЕШЕНО)

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Re: ПОМОГИТЕ!(РЕШЕНО)

Сообщение seaman 28 июн 2016, 19:40

собираю стринги сложением всего подряд

Если это в дебаге - наплевать, дебаг и сам медленный. Если это единичный случай, тем более где-тов ексепшене - тоже.
А вот если работа идет интенсивная с текстом, да еще и в цикле - советую перейти на StringBuilder.
https://habrahabr.ru/post/172689/
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: ПОМОГИТЕ!

Сообщение KirillNoob 28 июн 2016, 21:28

Survivelgame писал(а):
Paul Siberdt писал(а):
Survivelgame писал(а):Я не могу понять, почему переменная TimeAir не увеличивается.


Ну, как тут не понять? Это значит, что "лучь с чем-то слталкивается".

Дебажьте свой код, если не можете понять, построчно. ПО-СТРОЧ-НО.
Дебажьте рэйкаст, рисуя луч, дебажьте коллайдеры, выводя логи, дебажьте флаги и условия входа в разные ветви логики.


Он ни с чем не сталкивался, я специально добавил платформу с которой можно упасть, и когда я падал(платформа высокая) переменная не увеличивалась, да и я нашёл наилучшее решение, вот скрипт:

using UnityEngine;
using System.Collections;

public class falldamage : MonoBehaviour {

public hpandfood sc;//переменная со скриптом здоровья персонажа
public Transform Player;//объект от которого будем пускать луч
public float TimeAir;//время нахождения в воздухе

void Start()
{
sc = GameObject.Find("scripts").GetComponent<hpandfood>();//присваиваю переменной "sc" скрипт со здоровьем
}

void Update ()
{
Debug.DrawRay(Player.position, -transform.up*2);//проверка направления луча(если не указать число, то дебажный луч не будет виден)
Ray ray = new Ray(Player.position, -transform.up);//пускаю луч
RaycastHit hit;//нужен для проверки столкновения луча с чем либо
if(Physics.Raycast(ray, out hit))//если луч с чем-то сталкивается
{
if(hit.distance >=2)//и если длина луча больше чем 2
{
TimeAir += Time.deltaTime*20;// то мы увеличиваем переменную TimeAir со временем умноженное на 20(можно изменить как вы хотите)
}
else// иначе
{
sc.hp -= TimeAir;//мы отбавляем от здоровья персонажа TimeAir
TimeAir = 0;//и обнуляем эту переменную
}
}
}
}
Скрипт работает, здоровье отнимается, и потом переменная становится на 0. Долго мучался и только первый парень(или девушка, я не знаю), дал толковый совет. Проблема только в том, что если встать на край чего-нибудь, то луч ничего не касается, и считает, что игрок падает, в следствии игрок долго стоит на краю, отходит от него и подыхает, надо будет подумать как это исправить. А так скрипт полностью рабочий. Кому надо берите, может придумаете как исправить ту проблему(хотя игроки редко настолько близко к краю стоят и этот баг могут даже не заметить.).

Проверяй велосити по игрику, если больше,например,10 м/с он начинает щупать лучем
А так, спасибо)
KirillNoob
UNец
 
Сообщения: 11
Зарегистрирован: 29 янв 2016, 17:43

Пред.

Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 23