Математика в Unity. Уроки.
| |
PoqXert | Дата: Понедельник, 01 Июля 2013, 15:54 | Сообщение # 1 |
постоянный участник
Сейчас нет на сайте
| Начал писать уроки по математике в Unity3D: Математика Unity3D (урок 1): Mathf синус и косинус. Математика Unity3D (Урок 2). Mathf тангенс и котангенс. Математика Unity3D (Урок 3). Mathf арксинус и арккосинус. Математика Unity3D (Урок 4). Mathf два арктангенса. Математика Unity3D (Урок 5). Mathf квадратный корень, модуль, наименьшее и наибольшее значения. Математика Unity3D (Урок 6). Mathf две степени и три логарифма. Математика Unity3D (Урок 7). Mathf округление чисел. Математика Unity3D (Урок 8). Mathf знак и ограничители (диапазоны). Математика Unity3D (Урок 9). Mathf Интерполяции. Математика Unity3D (Урок 10). Mathf сравнение и сглаживания. Математика Unity3D (Урок 11). Mathf циклы и инверсная интерполяция. Математика Unity3D (Урок 12). Mathf Константы. Математика Unity3D (Урок 13). Vector Интерполяции. Математика Unity3D (Урок 14). Vector Умножение. Математика Unity3D (Урок 15). Vector Отражение, расстояние, проекция и угол. Математика Unity3D (Урок 16). Vector Переменные. Математика Unity (Урок 17): Quaternion.
Принимаются адекватные комментарии, вопросы, предложения.
Расширения для Unity3D Блог программиста - PoqXert.ru
Сообщение отредактировал PoqXert - Вторник, 19 Декабря 2017, 11:42 |
|
| |
Xakep | Дата: Среда, 10 Июля 2013, 14:49 | Сообщение # 41 |
めちゃくちゃちゃ
Сейчас нет на сайте
| Цитата (darklllord200) float _z = point.z * Mathf.Cos(Angle/count) - point.x * Mathf.Sin(Angle/count); float _x = point.z * Mathf.Sin(Angle/count) + point.x * Mathf.Cos(Angle/count); Я вот тоже не понял, хотя похоже немного на трансформацию систем координат. Мне кажется, можно было бы просто сделать что-то вроде: x = x0+r*cos(angle); y = y0+r*sin(angle); // а так полезные уроки, я вот в школе отлично знал математику, но не знал нафиг мне это нужно )) так что примеры как это использовать можно очень кстати для начинающих.
|
|
| |
darklllord200 | Дата: Среда, 10 Июля 2013, 16:54 | Сообщение # 42 |
был не раз
Сейчас нет на сайте
| Насколько я понял, преобразования в системе координат в Unity произошли следующие: 1. Ось косинусов или ось z поменяла свое направление и стала смотреть налево. 2. Оси повернулись на 90 градусов направо. Таким образом, ось косинусов z стала смотреть наверх, а ось синусов x стала смотреть направо. Тогда синус получает знаки -+ -+ косинус ++ -- Знаки синуса и косинуса сошлись с информацией в ваших уроках. Однако тангенс и котангенс получились другими: -+ +- Ось тангенсов, как я понимаю, в юнити должна смотреть направо (параллельно оси синусов). А ось котангенсов - вверх.
Сообщение отредактировал darklllord200 - Среда, 10 Июля 2013, 16:54 |
|
| |
PoqXert | Дата: Четверг, 11 Июля 2013, 02:11 | Сообщение # 43 |
постоянный участник
Сейчас нет на сайте
| Перепутал. Слишком много ошибок, для нормальных уроков.
Расширения для Unity3D Блог программиста - PoqXert.ru
|
|
| |
zaicev9797 | Дата: Пятница, 12 Июля 2013, 11:02 | Сообщение # 44 |
AbRaKaDaBrA
Сейчас нет на сайте
| Ничего страшного, ты главное пиши, а там тебя подправят если что. Сами по себе то уроки очень полезные. И главное что не видео, ато НЕКОТОРЫЕ с мобил сидят
проект Mysterious Space. The losted moment
|
|
| |
darklllord200 | Дата: Пятница, 12 Июля 2013, 11:55 | Сообщение # 45 |
был не раз
Сейчас нет на сайте
| Прошёл все 8 уроков. Спасибо. Жду продолжения.
|
|
| | |
zaicev9797 | Дата: Пятница, 19 Июля 2013, 18:50 | Сообщение # 47 |
AbRaKaDaBrA
Сейчас нет на сайте
| Так так, ктото давно ничего не писал
проект Mysterious Space. The losted moment
|
|
| |
PoqXert | Дата: Воскресенье, 21 Июля 2013, 09:07 | Сообщение # 48 |
постоянный участник
Сейчас нет на сайте
| Цитата (zaicev9797) Так так, ктото давно ничего не писал Прилив работы.
Расширения для Unity3D Блог программиста - PoqXert.ru
|
|
| | | |
pixeye | Дата: Воскресенье, 28 Июля 2013, 10:57 | Сообщение # 51 |
Red Winter Software
Сейчас нет на сайте
| Бросаю небольшую подборку которой пользуюсь для достижения различных эффектор интерполяции, видел, что автор затрагивает эту тему:) Ну и респект:) Прикреплю уроки обязаткльно.
Код using UnityEngine; using System.Collections; using System;
public static class Easing { // Adapted from source : http://www.robertpenner.com/easing/
public static float Ease (double linearStep, float acceleration, EasingType type) { float easedStep = acceleration > 0 ? EaseIn (linearStep, type) : acceleration < 0 ? EaseOut (linearStep, type) : (float)linearStep;
return MathHelper.Lerp (linearStep, easedStep, Math.Abs (acceleration)); }
public static float EaseIn (double linearStep, EasingType type) { linearStep = Mathf.Clamp01 ((float)linearStep); switch (type) { case EasingType.Step: return linearStep < 0.5 ? 0 : 1; case EasingType.Linear: return (float)linearStep; case EasingType.Sine: return Sine.EaseIn (linearStep); case EasingType.Quadratic: return Power.EaseIn (linearStep, 2); case EasingType.Cubic: return Power.EaseIn (linearStep, 3); case EasingType.Quartic: return Power.EaseIn (linearStep, 4); case EasingType.Quintic: return Power.EaseIn (linearStep, 5); } throw new NotImplementedException (); }
public static float EaseOut (double linearStep, EasingType type) { linearStep = Mathf.Clamp01 ((float)linearStep); switch (type) { case EasingType.Step: return linearStep < 0.5 ? 0 : 1; case EasingType.Linear: return (float)linearStep; case EasingType.Sine: return Sine.EaseOut (linearStep); case EasingType.Quadratic: return Power.EaseOut (linearStep, 2); case EasingType.Cubic: return Power.EaseOut (linearStep, 3); case EasingType.Quartic: return Power.EaseOut (linearStep, 4); case EasingType.Quintic: return Power.EaseOut (linearStep, 5); } throw new NotImplementedException (); } public static float EaseWithReturn (double linearStep, EasingType ease) { linearStep = (double)Mathf.Clamp01 ((float)linearStep); var amount = linearStep > 0.5 ? 1 + ((0.5 - linearStep) * 2) : (linearStep * 2); return EaseOut (amount, ease); } public static float EaseInOut (double linearStep, EasingType easeInType, EasingType easeOutType) { linearStep = Mathf.Clamp01 ((float)linearStep); return linearStep < 0.5 ? EaseInOut (linearStep, easeInType) : EaseInOut (linearStep, easeOutType); }
public static float EaseInOut (double linearStep, EasingType type) { linearStep = Mathf.Clamp01 ((float)linearStep); switch (type) { case EasingType.Step: return linearStep < 0.5 ? 0 : 1; case EasingType.Linear: return (float)linearStep; case EasingType.Sine: return Sine.EaseInOut (linearStep); case EasingType.Quadratic: return Power.EaseInOut (linearStep, 2); case EasingType.Cubic: return Power.EaseInOut (linearStep, 3); case EasingType.Quartic: return Power.EaseInOut (linearStep, 4); case EasingType.Quintic: return Power.EaseInOut (linearStep, 5); } throw new NotImplementedException (); }
static class Sine { public static float EaseIn (double s) { return (float)Math.Sin (s * MathHelper.HalfPi - MathHelper.HalfPi) + 1; }
public static float EaseOut (double s) { return (float)Math.Sin (s * MathHelper.HalfPi); }
public static float EaseInOut (double s) { return (float)(Math.Sin (s * MathHelper.Pi - MathHelper.HalfPi) + 1) / 2; } }
static class Power { public static float EaseIn (double s, int power) { return (float)Math.Pow (s, power); }
public static float EaseOut (double s, int power) { var sign = power % 2 == 0 ? -1 : 1; return (float)(sign * (Math.Pow (s - 1, power) + sign)); }
public static float EaseInOut (double s, int power) { if (s < 0.5) return EaseIn (s * 2, power) / 2; return (EaseOut ((s - 0.5) * 2, power) / 2) + 0.5f; } } }
public enum EasingType { Step, Linear, Sine, Quadratic, Cubic, Quartic, Quintic }
public static class MathHelper { public const float Pi = (float)Math.PI; public const float HalfPi = (float)(Math.PI / 2);
public static float Lerp (double from, double to, double step) { return (float)((to - from) * step + from); } }
Благодаря этой штуки делаю нечто подобное: (Сразу говорю, что с обобщенными типами в таком формате особо не работал и наверно то, что я хочу можно выразить несколько иначе)
ACTORS - мой фреймворк на Unity Until We Die - игра над которой работаю
|
|
| | |
andarky | Дата: Среда, 28 Августа 2013, 16:18 | Сообщение # 53 |
старожил
Сейчас нет на сайте
| PoqXert, ну вот уже интересные темы пошли!Добавлено (28.08.2013, 16:18) --------------------------------------------- еще интересно было бы узнать об углах Quternion / EulerAngles как переводить туда>>обратно. Плавные повороты (хотя Lerp это делает) просто интересны разные методы, а я пользуюсь только стандартным скриптом от камеры - переписывая под свои нужды.
• Отражение угла при столкновении (не физика) - давно бьюсь над проблемой, вроде бы всё элементарно, но получается фигня... (хочу игру типа Xonix доделать)
Моя страничка по дизайну GameDev//Design//3D Ютубчик
|
|
| |
PoqXert | Дата: Суббота, 14 Сентября 2013, 11:39 | Сообщение # 54 |
постоянный участник
Сейчас нет на сайте
| andarky, возможно будет, когда буду рассматривать Vector и Quaternion. Добавлено (06.09.2013, 10:36) --------------------------------------------- Добавлен урок 12: Математика Unity3D (Урок 12). Mathf Константы. Добавлено (08.09.2013, 14:49) --------------------------------------------- Новый урок, уже про векторы: Математика Unity3D (Урок 13). Vector Интерполяции. Добавлено (10.09.2013, 11:48) --------------------------------------------- Урок 14: Математика Unity3D (Урок 14). Vector Умножение. Добавлено (14.09.2013, 11:39) --------------------------------------------- Новый урок: Математика Unity3D (Урок 15). Vector Отражение, расстояние, проекция и угол.
Расширения для Unity3D Блог программиста - PoqXert.ru
Сообщение отредактировал PoqXert - Понедельник, 02 Сентября 2013, 17:25 |
|
| |
NEBR | Дата: Понедельник, 30 Сентября 2013, 15:26 | Сообщение # 55 |
почти ветеран
Сейчас нет на сайте
| Полезные уроки. Все посмотрел, переделал свой старый скрипт, выиграл немножко в производительности. Спасибо ) PoqXert, будет ли продолжение?
King Size #Gamiron12
|
|
| |
PoqXert | Дата: Четверг, 03 Октября 2013, 04:33 | Сообщение # 56 |
постоянный участник
Сейчас нет на сайте
| Цитата (NEBR) PoqXert, будет ли продолжение? Скорее всего будет, но не знаю когда.Добавлено (03.10.2013, 04:33) --------------------------------------------- Урок 16: Математика Unity3D (Урок 16). Vector Переменные.
Расширения для Unity3D Блог программиста - PoqXert.ru
|
|
| |
NEBR | Дата: Понедельник, 07 Октября 2013, 12:43 | Сообщение # 57 |
почти ветеран
Сейчас нет на сайте
| PoqXert, спасибо что не бросаешь курс ) Урок хороший, жаль только что не привел примеров, ну да ладно ) заметил опечатку. в разделе длина вектора когда пишешь new Vector забыл два раза приписать тройку. Ждем еще уроков, спасибо еще раз!
King Size #Gamiron12
|
|
| |
PoqXert | Дата: Понедельник, 07 Октября 2013, 13:58 | Сообщение # 58 |
постоянный участник
Сейчас нет на сайте
| Курс я совсем не бросаю, но уроки выпускаю не часто. Времени нет, и 25 час к суткам не прибавишь. Рад, если уроки кому-то полезны.
Расширения для Unity3D Блог программиста - PoqXert.ru
|
|
| |
Allasstar | Дата: Понедельник, 07 Октября 2013, 15:35 | Сообщение # 59 |
был не раз
Сейчас нет на сайте
| Очень помогло спс!
В документацыи не так розписано а в учебниках надо ешо искать а так всьо под рукой.
Сообщение отредактировал Allasstar - Понедельник, 07 Октября 2013, 15:40 |
|
| |
NEBR | Дата: Понедельник, 07 Октября 2013, 17:02 | Сообщение # 60 |
почти ветеран
Сейчас нет на сайте
| PoqXert, конечно полезны. я конспектирую твои уроки, и когда нужно лезу туда, сразу нахожу нужную функцию, еще и с примером
King Size #Gamiron12
|
|
| |
|