Пятница, 22 Ноября 2024, 18:51

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Математика в 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
постоянный участник
Сейчас нет на сайте
Перепутал.
Слишком много ошибок, для нормальных уроков. dry


Расширения для Unity3D
Блог программиста - PoqXert.ru
zaicev9797Дата: Пятница, 12 Июля 2013, 11:02 | Сообщение # 44
AbRaKaDaBrA
Сейчас нет на сайте
Ничего страшного, ты главное пиши, а там тебя подправят если что. Сами по себе то уроки очень полезные. И главное что не видео, ато НЕКОТОРЫЕ smile с мобил сидят

проект Mysterious Space. The losted moment
darklllord200Дата: Пятница, 12 Июля 2013, 11:55 | Сообщение # 45
был не раз
Сейчас нет на сайте
Прошёл все 8 уроков. Спасибо. Жду продолжения.
PoqXertДата: Пятница, 12 Июля 2013, 16:11 | Сообщение # 46
постоянный участник
Сейчас нет на сайте
Новый урок:
Математика Unity3D (Урок 9). Mathf Интерполяции.


Расширения для Unity3D
Блог программиста - PoqXert.ru
zaicev9797Дата: Пятница, 19 Июля 2013, 18:50 | Сообщение # 47
AbRaKaDaBrA
Сейчас нет на сайте
Так так, ктото давно ничего не писал

проект Mysterious Space. The losted moment
PoqXertДата: Воскресенье, 21 Июля 2013, 09:07 | Сообщение # 48
постоянный участник
Сейчас нет на сайте
Цитата (zaicev9797)
Так так, ктото давно ничего не писал

Прилив работы.


Расширения для Unity3D
Блог программиста - PoqXert.ru
Fr0sTДата: Воскресенье, 21 Июля 2013, 11:20 | Сообщение # 49
постоянный участник
Сейчас нет на сайте
PoqXert, очень клевые уроки,интересно читать так,продолжай пожалуйста!!!



PoqXertДата: Воскресенье, 28 Июля 2013, 03:18 | Сообщение # 50
постоянный участник
Сейчас нет на сайте
Добавлен урок 10:
Математика Unity3D (Урок 10). Mathf сравнение и сглаживания.


Расширения для 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 - игра над которой работаю

PoqXertДата: Среда, 28 Августа 2013, 15:30 | Сообщение # 52
постоянный участник
Сейчас нет на сайте
Новый урок:
Математика Unity3D (Урок 11). Mathf циклы и инверсная интерполяция.


Расширения для Unity3D
Блог программиста - PoqXert.ru
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
  • Страница 3 из 4
  • «
  • 1
  • 2
  • 3
  • 4
  • »
Поиск:

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