Суббота, 20 Апреля 2024, 10:25

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Записи участника » Lertmind [593]
Результаты поиска
LertmindДата: Суббота, 20 Сентября 2014, 19:25 | Сообщение # 541 | Тема: cant add script
заслуженный участник
Сейчас нет на сайте
Ты должен файл назвать так: имя.cs, где имя это название класса (public class characterController : MonoBehaviour {).
В данном случае ты скачал с именем "charactercontroller.cs.cs", переименуй в "characterController.cs".

Добавлено (20.09.2014, 19:25)
---------------------------------------------
Я этот урок тоже читал, автор не предполагал, что человек может не знать, как нужно называть скрипты.

LertmindДата: Суббота, 20 Сентября 2014, 09:14 | Сообщение # 542 | Тема: Размер текстуры отображаемой на экране
заслуженный участник
Сейчас нет на сайте
Как вариант: преобразовать точки по углам текстуры в координаты экрана, потом уже легко определить ширину и высоту. Camera.WorldToScreenPoint в помощь.

Добавлено (20.09.2014, 09:14)
---------------------------------------------
Скрипт, который работает для спрайта:
Код
using UnityEngine;

public class Test : MonoBehaviour
{
     void Start()
     {
         var sr = GetComponent<SpriteRenderer>();
         // Определяем точки в мировых координатах
         Bounds bounds = sr.bounds;
         float top = transform.position.y + bounds.extents.y;
         float right = transform.position.x + bounds.extents.x;
         float bottom = transform.position.y - bounds.extents.y;
         float left = transform.position.x - bounds.extents.x;
         // Размер в пикселях
         Vector3 size = Camera.main.WorldToScreenPoint(new Vector3(right, top, 0))
             - Camera.main.WorldToScreenPoint(new Vector3(left, bottom, 0));
         // Округляем до целых
         size.x = Mathf.Round(size.x); // Ширина
         size.y = Mathf.Round(size.y); // Высота
         Debug.Log(size);
     }
}


Сообщение отредактировал Lertmind - Суббота, 20 Сентября 2014, 09:15
LertmindДата: Среда, 17 Сентября 2014, 11:19 | Сообщение # 543 | Тема: проблемка с collider2d
заслуженный участник
Сейчас нет на сайте
А у всех работает, значит твой косяк и никто не поможет тебе с такой недостаточной информацией.
LertmindДата: Понедельник, 15 Сентября 2014, 01:58 | Сообщение # 544 | Тема: Имитация ландшафта в 2D [libgdx]
заслуженный участник
Сейчас нет на сайте
Посмотри скрины к игре OpenTTD, там похожий ландшафт как в генераторе. Если тебе нужен именно такой, то в 2D можно. Можно что-то нагуглить на isometric terrain. Хороших примеров не нашёл, но например здесь есть бесплатный движок на java. Поройся в OpenTTD и похожих тайкунах.
LertmindДата: Понедельник, 15 Сентября 2014, 01:36 | Сообщение # 545 | Тема: Android Build ошибка
заслуженный участник
Сейчас нет на сайте
MANMANA, Eclipse не обязательно ставить, Android SDK Manager доступен через меню программ. Но я тоже думаю, что стоит правильно переставить SDK.

dzrone3488, ты всё по инструкции делал?
Некоторые советуют копируют файлы, которые в ошибках в нужные места. В твоём случае aapt.exe нужно скопировать из C:\Program Files\Android\android-sdk\build-tools\последняя_версия. Такое решение предлагается здесь например.
LertmindДата: Суббота, 13 Сентября 2014, 19:25 | Сообщение # 546 | Тема: Туплю в написании скрипта
заслуженный участник
Сейчас нет на сайте
Может в этой строчке obj.transform.position = ray.GetPoint(hit.distance) + new Vector3(0, 0.5f, 0);
добавить Clamp? obj.transform.position = ray.GetPoint(Mathf.Clamp(hit.distance, 0f, 2f)) + new Vector3(0, 0.5f, 0);

Добавлено (13.09.2014, 19:25)
---------------------------------------------
Правда объект будет чуть выше, если дальше смотреть и расстояние чуть другое (потому что луч не параллелен поверхности). В играх от первого лица обычно объект просто перед тобой.

LertmindДата: Пятница, 12 Сентября 2014, 01:58 | Сообщение # 547 | Тема: точный плавный поворот
заслуженный участник
Сейчас нет на сайте
Цитата allods ()
Lertmind,

float angle = Mathf.LerpAngle(angle , targetAngle, Time.deltaTime);
transform.eulerAngles = new Vector3(0, angle, 0);

Этого достаточно

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

У polous правильный код с равномерным движением:
Перед началом поворота -
Код
Quaternion target = Quaternion.Euler (startAngle_x, startAngle_y + AngleOfRotate, startAngle_z);

На каждой итерации -
Код
transform.rotation = Quaternion.RotateTowards (transform.rotation, target, Time.deltaTime * speed); // Здесь deltaTime * speed - это СМЕЩЕНИЕ


Сообщение отредактировал Lertmind - Пятница, 12 Сентября 2014, 01:58
LertmindДата: Четверг, 11 Сентября 2014, 21:22 | Сообщение # 548 | Тема: Соединение объектов в форме дуги
заслуженный участник
Сейчас нет на сайте
Это гуглится на "blender rounded edges". Ответ например здесь http://blender.stackexchange.com/questio....85#2485. Простой способ Ctrl + B. Или использовать модификатор Bevel.
LertmindДата: Суббота, 06 Сентября 2014, 02:24 | Сообщение # 549 | Тема: точный плавный поворот
заслуженный участник
Сейчас нет на сайте
allods, ты - "молодец", но человеку не помочь этой функцией, если он не знает как правильно должно работать. Ему и надо было показать как надо делать, что я сделал выше.
С твоим LerpAngle, надо ещё проделывать такое (не считая ещё таких важных нюансов, как изменение startAngle и targetAngle для повторного поворота):
Код
public float rotationSpeed = 0f; // Скорость поворота
public float targetAngle = 90f; // Угол на который надо повернуться
public float startAngle = 0f;
float journeyTime = 0f;// Времени в движении
float currentTime = 0f;

void Start()
{
    journeyTime = targetAngle / rotationSpeed;
}

void Update()
{
    currentTime += Time.deltaTime;
    float fracComplete = currentTime / journeyTime;
    float angle = Mathf.LerpAngle(startAngle, targetAngle, fracComplete);
    transform.eulerAngles = new Vector3(0, angle, 0);
}

По мне здесь больше геморроя.

Правка: minAngle переназвал в startAngle, так понятней.


Сообщение отредактировал Lertmind - Пятница, 12 Сентября 2014, 02:27
LertmindДата: Суббота, 06 Сентября 2014, 00:51 | Сообщение # 550 | Тема: точный плавный поворот
заслуженный участник
Сейчас нет на сайте
Ты просто неправильно делаешь проверку на достижение желаемого угла. Твой последний с Quaternion.Lerp будет двигаться с разной скорость.
Мой вариант с transform.Rotate, где скорость поворота одинаковая всегда:
Код
public class RotateMe : MonoBehaviour
{

     public float rotationSpeed = 0f; // Скорость поворота
     public float targetAngle = 0f; // Угол на который надо повернуться

     IEnumerator RotateMeNow()
     {
         float currentAngle = 0f;
         while (true)
         {
             float step = rotationSpeed * Time.deltaTime;
             if (currentAngle + step > targetAngle)
             {
                 // Докручиваем до нашего угла
                 step = targetAngle - currentAngle;
                 transform.Rotate(Vector3.up, step);
                 break;
             }
             currentAngle += step;
             transform.Rotate(Vector3.up, step);
             yield return null;
         }
     }

     void Update()
     {
         if (Input.GetMouseButtonDown(0))
         {
             StartCoroutine(RotateMeNow());
         }
     }
}

Добавлено (06.09.2014, 00:51)
---------------------------------------------
Если ты не научился работать с корутинами:

Код
public class RotateMe : MonoBehaviour
{
     public float rotationSpeed = 0f; // Скорость поворота
     public float targetAngle = 0f; // Угол на который надо повернуться

     bool goRotatePlr = false;
     float currentAngle = 0f;

     void Start()
     {
         goRotatePlr = true;
     }

     void Update()
     {
         if (goRotatePlr)
         {
             float step = rotationSpeed * Time.deltaTime;
             if (currentAngle + step > targetAngle)
             {
                 // Докручиваем до нашего угла
                 step = targetAngle - currentAngle;
                 transform.Rotate(Vector3.up, step);
                 goRotatePlr = false;
                 currentAngle = 0f;
             }
             else
             {
                 currentAngle += step;
                 transform.Rotate(Vector3.up, step);
             }
         }
     }
}
LertmindДата: Среда, 03 Сентября 2014, 23:16 | Сообщение # 551 | Тема: Spider Plant [Gamiron №8]
заслуженный участник
Сейчас нет на сайте
Портят игру такие баги:
1. Неправильная обработка поиска пути у юнитов: они жутко тупят, застревают.
2. "Рабочие" неправильно определяют ближайшую "Плавильню", отучить нереально и "Плавильню" не удалить.
3. Идущий от тебя враг не получает урона, приходиться его преследовать и бить когда он встанет.

Простой вариант решения столкновения рабочих - не проверять у них коллизии. Этот хак/костыль ещё в Starcraft использовали, здесь об этом написано если интересно.
LertmindДата: Среда, 03 Сентября 2014, 22:51 | Сообщение # 552 | Тема: Поиск количества true в массиве в update
заслуженный участник
Сейчас нет на сайте
Вообще у тебя проблема с логикой приложения, обычно нет смысла так делать.

Но если тебе так хочется:
Код
public class Test : MonoBehaviour
{
     bool array = new bool[10];
     int count = 0;

     void Update()
     {
         int count = 0;
         foreach (bool val in array)
         {
             if (val) count++;
         }

         // Используешь переменную count
         // ...
     }
}
LertmindДата: Среда, 03 Сентября 2014, 01:47 | Сообщение # 553 | Тема: Голосование за проекты конкурса "Gamiron №8"
заслуженный участник
Сейчас нет на сайте
Drish - Spider Plant
LertmindДата: Среда, 03 Сентября 2014, 01:00 | Сообщение # 554 | Тема: Space Conflict [Gamiron #8]
заслуженный участник
Сейчас нет на сайте
Шрифт плохочитаемый: сам по себе, курсив так ещё и в верхнем регистре. Верхний регистр стоит применять только в редких случаях, но точно не когда идёт много текста. Для примера, обычный Arial:
LertmindДата: Четверг, 28 Августа 2014, 23:09 | Сообщение # 555 | Тема: Помогите сделать задержку
заслуженный участник
Сейчас нет на сайте
Цитата beril ()
Используй Таймер или Invoke

Это парашный таймер, лучше использовать Coroutine, про который автор темы и говорил, только он не понял как с ним работать. Как с ними работать хорошо написано здесь http://unitypatterns.com/.

Но в данном случае, лучше делать как написал GantZ_Yaka.
LertmindДата: Четверг, 28 Августа 2014, 16:43 | Сообщение # 556 | Тема: Woodcutter Chuck (Аркада) [Android]
заслуженный участник
Сейчас нет на сайте
Выдержанно в одном стиле, это радует. Можно было бы добавить ещё вместо дерева что-то: блоки бетона с арматурой вместо веток, дерево из сказки с волшебными бобами, здание с антеннами и вывешенным бельём, космическую станцию (как раз по модулям) с их зеркальными пластинами; так было бы брутальней.
LertmindДата: Четверг, 28 Августа 2014, 16:24 | Сообщение # 557 | Тема: FastBurger [2d | Haxe | Android]
заслуженный участник
Сейчас нет на сайте
Цитата inventrix ()
Странно, кто нибудь еще не видит скрины?

Ага, мне бы теперь развидеть бабу с бородой.
LertmindДата: Среда, 27 Августа 2014, 23:57 | Сообщение # 558 | Тема: Совсем бум бум
заслуженный участник
Сейчас нет на сайте
1. Учить надо английский.
2. Если ты не изучал ЯП, то будет сложно в первый раз. На некоторых язык писать проще, например на C#, Java, JS, Python писать проще, чем на C, C++.
3. Из движков тебе многие посоветую Unity3D, я тоже. Там С#, поэтому будет хорошо прочитать книгу типа Троелсен - Язык программирования C#. Редактор кода в Unity уже есть, но можно использовать Visual Studio.

А вообще лучше научись гуглить и не захламлять форум элементарными вопросами.
LertmindДата: Среда, 27 Августа 2014, 21:36 | Сообщение # 559 | Тема: Запрет анимации из Update во время воспроизведения другой
заслуженный участник
Сейчас нет на сайте
Цитата
Там не TakeKatana.TakeKatana, а TakeKatana.KatanaTaking.

Я про объявление переменной. public TakeKatana TakeKatana; // Это ваша строчка

Мой способ так себе, нужно делать гибче. Один из хороших способов это "система конечных автоматов" (finite-state machine (FSM)).
LertmindДата: Среда, 27 Августа 2014, 19:36 | Сообщение # 560 | Тема: Запрет анимации из Update во время воспроизведения другой
заслуженный участник
Сейчас нет на сайте
Может из-за того, что ты назвал объект класса так же как и класс? public TakeKatana TakeKatana; // Это ужас
Хотя даже так должно работать. По твоему коду не видно, что не так. И я не понял, зачем проверять на false, я думал что проверку if (!animation.IsPlaying("KatanaTakeClip")) ты поставишь перед всеми if Joy.


Сообщение отредактировал Lertmind - Среда, 27 Августа 2014, 19:49
Форум игроделов » Записи участника » Lertmind [593]
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг