Убывание значения по секундам.
|
|
Drag0n | Дата: Воскресенье, 31 Июля 2016, 16:55 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Доброго времени суток. Только пробую себя в програмирование, да и юнити тыкаю только 4 день. Естественно все по видео урокам. В 1 из уроков столкнуться с темой -здоровье, сила, голод. Посмотрев урок я повторил результат. Ну в прицепе все работает, но мне нужен еще и уровень воды. По этому немного помудрив с кодом я получил то что имею на руках (СМ ниже). Изначально план такой, я каждую секунду отнимаю одну секунду от значения в секундах 7 дней еда и 3 дня вода. И в основном вода отсчитывается корректно, а еда делает пол цикла и весит. С более мелкими цифрами работает ИНОГДА. Почему себя так ведет скрипт? Где ошибка?
Код using UnityEngine; using System.Collections; using UnityEngine.UI;
public class NewBehaviourScript6 : MonoBehaviour { public float maxZ = 100f; public float maxB = 100f; public float maxG = 604800f; public float maxW = 259200f; private float Timer; public Slider sliderZdorove; public Slider sliderBeg; public Slider sliderGolod; public Slider sliderWoda;
void Start () { sliderZdorove.maxValue = maxZ; sliderBeg.maxValue = maxB; sliderGolod.maxValue = maxG; sliderWoda.maxValue = maxW; } void Update () {
Timer = 1f * Time.deltaTime;
//здоровье if (Input.GetKey (KeyCode.LeftShift)) { maxZ = maxZ - 1f * Time.deltaTime; sliderZdorove.value = maxZ; }
//бег if (Input.GetKey (KeyCode.LeftControl)) { maxB = maxB - 1f * Time.deltaTime; sliderBeg.value = maxB; } else //восстановление бега if (maxB <= 99.9f) { maxB = maxB + 1f * Time.deltaTime; sliderBeg.value = maxB; }
// голод if (maxG >= 0f) { maxG = maxG - Timer; sliderGolod.value = maxG; }
//пить if (maxW >= 0f) { maxW = maxW - Timer; sliderWoda.value = maxW; } } }
|
|
| |
Tymonr | Дата: Воскресенье, 31 Июля 2016, 18:20 | Сообщение # 2 |
With OpenSource forever♥
Сейчас нет на сайте
| Цитата Drag0n ( ) Timer = 1f * Time.deltaTime; Умножать числа на 1 - мощь!
Цитата Drag0n ( ) public Slider sliderBeg; Транслит - тоже круто. А зачем они публичные?
В чем проблема - хз, лень разбираться, но тут кода немного, перепиши с 0ля все, найдется проблема по ходу дела
Если вы решили обратиться к нам за помощью, не становитесь в позицию неудачника. И не ведите себя как неудачник. Лучший способ получить быстрый и чуткий ответ, - спрашивать как победитель — спрашивать как человек умный, уверенный в себе и знающий, которому просто понадобилась помощь при решении одной конкретной проблемы. Как правильно задавать вопросы в технических форумах
|
|
| |
Drag0n | Дата: Воскресенье, 31 Июля 2016, 18:24 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Цитата Tymonr ( ) А зачем они публичные? А х... его знает по уроку так Причем туда вставляется потом слайдер и он отображает.
|
|
| |
Lertmind | Дата: Воскресенье, 31 Июля 2016, 18:33 | Сообщение # 4 |
заслуженный участник
Сейчас нет на сайте
| Drag0n, прочитай float, у него точность около 7 десятичных знаков, когда отнимаешь ничего не меняется:
Код using System.IO; using System;
class Program { static void Main() { Console.WriteLine("{0:R}", 604800f - 0.016666f); // float, вывод: 604800 Console.WriteLine("{0:R}", 604800.0 - 0.016666); // double, вывод: 604799.983334 } } Храни в double, а когда надо вывести приводи к float, то есть: public double maxG = 604800; ... sliderGolod.value = (float) maxG;
Добавлено (31 июля 2016, 18:33) --------------------------------------------- Можешь ещё просто использовать структуру DateTime, сможешь легко отсчитывать дни, недели и т. п.
Сообщение отредактировал Lertmind - Воскресенье, 31 Июля 2016, 18:34 |
|
| |
Drag0n | Дата: Воскресенье, 31 Июля 2016, 18:34 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| Цитата Lertmind ( ) Храни в double, а когда надо вывести приводи к float, то есть: public double maxG = 604800f; ... sliderGolod.value = (float) maxG;
Спасибо Помогло! заработало Я бы фиг догадался бы на данной стадии знакомства с unity....
Сообщение отредактировал Drag0n - Воскресенье, 31 Июля 2016, 18:35 |
|
| |
Lertmind | Дата: Воскресенье, 31 Июля 2016, 18:36 | Сообщение # 6 |
заслуженный участник
Сейчас нет на сайте
| Цитата Drag0n ( ) Я бы фиг догадался бы на данной стадии знакомства с unity.... Это не Unity, это вообще о представлении чисел с плавающей точкой в компьютерах.
|
|
| |
Drag0n | Дата: Воскресенье, 31 Июля 2016, 18:40 | Сообщение # 7 |
был не раз
Сейчас нет на сайте
| Цитата Lertmind ( ) это вообще о представлении чисел с плавающей точкой в компьютерах. И с программированием вот только знакомлюсь. Для меня это цифры - а для языка обязательные условия при которых работает или нет. Я то кроме html и css пока не чего не знаю да и это тоже не программирование.
|
|
| |
Ordan | Дата: Понедельник, 01 Августа 2016, 02:55 | Сообщение # 8 |
Главный зомби
Сейчас нет на сайте
| Drag0n, я вообще стараюсь округлять все флоаты, или же отрубать хвосты, а то знаю я этих паршивцев.
Цитата недели: Из-за леса, из-за гор, кишки, месиво, хардкор. (Берсерк ТВ-2)
Мои проекты ТЫК Мои видяхи на ютубэ ТЫК
Если ты споришь с идиотом, вероятно тоже самое делает и он.
|
|
| |