Dmi7ry
Гл. Администратор
Репутация: 1379
Offline
Пол:  Награды:  ![За постоянность! [200 дней на форуме] За постоянность! [200 дней на форуме]](http://forum.hellroom.ru/awards/78e87f17e3713947881315332c8ce619_hellroomforum_time_silver.gif) ![За лояльность! [+1000 репутации] За лояльность! [+1000 репутации]](http://forum.hellroom.ru/awards/49d1e615667c15086498002286ccd3e9_hellroomforum_good_gold.gif)   
API: GameMaker Studio Master
Деятельность: Code, design
Сообщений: 6626
|
 |
« Ответ #210 : Декабрь 12, 2017, 19:43:14 » |
|
Это не то, что мне нужно. Ваш код создает угол, симметричный заданному, а мой - отраженный. Ось выступает в качестве поверхности отражения, а не симметрии. Давайте возьмём поверхность 0 градусов. На неё под углом 135 градусов падает луч. Под каким углом он должен отразиться?
|
|
|
|
|
Записан
|
- А какой, собственно, командой процессора колобок ест черта? - Командой EAT... |  | Справка и FAQ в правом верхнем углу... |  |
|
|
|
MusNik
KeeVee Games
GM Pro user
Репутация: 733
Offline
Пол:  Награды:  ![За постоянность! [200 дней на форуме] За постоянность! [200 дней на форуме]](http://forum.hellroom.ru/awards/78e87f17e3713947881315332c8ce619_hellroomforum_time_silver.gif) ![За лояльность! [+500 репутации] За лояльность! [+500 репутации]](http://forum.hellroom.ru/awards/90cb589b7473ca11705300194079bf64_hellroomforum_good_bronze.gif)   ...
API: GameMaker Studio 2
Сообщений: 3241
|
 |
« Ответ #211 : Декабрь 12, 2017, 20:10:44 » |
|
Это не то, что мне нужно. Ваш код создает угол, симметричный заданному, а мой - отраженный. Ось выступает в качестве поверхности отражения, а не симметрии.
Эээ, разве ось "симметрии" не равна оси "отражения" + 90 градусов?
|
|
|
|
|
Записан
|
|
|
|
DmitryDS
Потому что я такой-сякой
GM Pro user
Репутация: 159
OfflineНаграды: ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](http://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)  ![За постоянность! [100 дней на форуме] За постоянность! [100 дней на форуме]](http://forum.hellroom.ru/awards/79b1a4915bff7098a4a1984ad370be2c_hellroomforum_time_bronze.gif)
API: GameMaker Studio Master
Сообщений: 1061
|
 |
« Ответ #212 : Декабрь 12, 2017, 20:13:28 » |
|
Это не то, что мне нужно. Ваш код создает угол, симметричный заданному, а мой - отраженный. Ось выступает в качестве поверхности отражения, а не симметрии.
Эээ, разве ось "симметрии" не равна оси "отражения" + 90 градусов? Да это уже в чате обсудили, если кто не заметил. (И, замечу, что это верно только в половине случаев, с осью симметрии).
|
|
|
|
|
Записан
|
Я никогда никого не пытаюсь оскорбить или обидеть, хотя порой веду себя вызывающе. Не обижайтесь, я не со зла 
|
|
|
|
|
Slug2002
Активный участник
   
Репутация: 20
Offline
Пол:  Награды:  ![За постоянность! [10 дней на форуме] За постоянность! [10 дней на форуме]](http://forum.hellroom.ru/awards/35b6e985f89cc9a79a2bbfdd216390ca_hellroomforum_time_tin.gif)
API: GameMaker Studio Pro
Деятельность: GML, Network, Ultimate 3D, Java Script
Сообщений: 272
слава векторам
|
 |
« Ответ #214 : Декабрь 29, 2017, 19:49:09 » |
|
Простой скролл в RTS без использования объекта курсора.Это лучше всего впихнуть в какой нибудь главный объект отвечающий за переменные.  Create: ss=16//Скорость скролла ds=16//Отвечает за расстояние скролла.  Step: if view_xview[0]>0 if mouse_x<view_xview[0]+ds or keyboard_check(vk_left) { view_xview[0]-=ss }
if view_yview[0]>0 if mouse_y<view_yview[0]+ds or keyboard_check(vk_up) { view_yview[0]-=ss }
if view_xview[0]<room_width-view_wview[0] if mouse_x>view_xview[0]+view_wview[0]-ds or keyboard_check(vk_right) { view_xview[0]+=ss }
if view_yview[0]<room_height-view_hview[0] if mouse_y>view_yview[0]+view_hview[0]-ds or keyboard_check(vk_down) { view_yview[0]+=ss }
|
|
|
|
« Последнее редактирование: Декабрь 29, 2017, 23:15:39 от Slug2002 »
|
Записан
|
На джеме побеждает не десяток однообразных уровней, а один, но сделанный на совесть.Fur
|
|
|
Fur
Абы-какой
GM Pro user
Репутация: 463
Offline
Пол:  Награды:  ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](http://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![Третье место на HellRoom Jam #9 [Flucoldache] Третье место на HellRoom Jam #9 [Flucoldache]](http://forum.hellroom.ru/awards/bb4b4f1479909ce4eb3764370bdb2375_hj9_bronze-1.gif) ![За лояльность! [+300 репутации] За лояльность! [+300 репутации]](http://forum.hellroom.ru/awards/8ff7443ce508760cfbf715910b3eb0b3_hellroomforum_good_copper.gif)  
API: Game Maker 8.0 Lite
Деятельность: Бурная.
Сообщений: 3673
Лисяток тебе.
|
 |
« Ответ #215 : Декабрь 29, 2017, 20:04:50 » |
|
Простой скролл в RTS без использования объекта курсора.Это лучше всего впихнуть в какой нибудь главный объект отвечающий за переменные.  Create: ss=16//Скорость скролла ds=16//Отвечает за расстояние скролла.  Step: if view_xview[0]>0 if mouse_x<view_xview[0]+16 or keyboard_check(vk_left) {view_xview[0]-=16} if view_yview[0]>0 if mouse_y<view_yview[0]+16 or keyboard_check(vk_up) {view_yview[0]-=16} if view_xview[0]<room_width-view_wview[0] if mouse_x>view_xview[0]+view_wview[0]-16 or keyboard_check(vk_right) {view_xview[0]+=16} if view_yview[0]<room_height-view_hview[0] if mouse_y>view_yview[0]+view_hview[0]-16 or keyboard_check(vk_down) {view_yview[0]+=16 - Отсутствие какого-либо форматирования (пока-пока, читаемость кода). - Волшебные числа в коде. (самое смешное -- ты даже догадался создать переменные, но мыслительного процесса, по всей видимости, не хватило на то, чтобы использовать их в коде, лолц.) - Это настолько элементарная задача, что с таким же успехом можно сюда впихнуть код движения на стрелачки. Очень полезно, верно?
|
|
|
|
|
Записан
|
В одной отдельно взятой фразе не должно быть больше миллиона муравьёв, пусть даже она — научного труда о муравьях. Hyperflex
|
|
|
AndrewVideoGames
Главный Модератор
Репутация: 821
Offline
Пол:  Награды: ![За постоянность! [500 дней на форуме] За постоянность! [500 дней на форуме]](http://forum.hellroom.ru/awards/e0371460a203dd46d2dc161571bf6144_hellroomforum_time_gold.gif) ![За лояльность! [+750 репутации] За лояльность! [+750 репутации]](http://forum.hellroom.ru/awards/ba712f70231a68b216c525b7e8eca694_hellroomforum_good_silver.gif)  
API: GameMaker Studio Pro
Деятельность: А я кто? А я руководитель!
Сообщений: 7316
|
 |
« Ответ #216 : Декабрь 29, 2017, 23:14:21 » |
|
Простой скролл в RTS без использования объекта курсора.Это лучше всего впихнуть в какой нибудь главный объект отвечающий за переменные.  Create: ss=16//Скорость скролла ds=16//Отвечает за расстояние скролла.  Step: if view_xview[0]>0 if mouse_x<view_xview[0]+16 or keyboard_check(vk_left) {view_xview[0]-=16} if view_yview[0]>0 if mouse_y<view_yview[0]+16 or keyboard_check(vk_up) {view_yview[0]-=16} if view_xview[0]<room_width-view_wview[0] if mouse_x>view_xview[0]+view_wview[0]-16 or keyboard_check(vk_right) {view_xview[0]+=16} if view_yview[0]<room_height-view_hview[0] if mouse_y>view_yview[0]+view_hview[0]-16 or keyboard_check(vk_down) {view_yview[0]+=16 Да, с ss/ds конечно факапнулся, раз объявил, то вместо 16 вставь переменные, чтобы понятно было.
|
|
|
|
|
Записан
|
|
|
|
Neo
*LisenokArtist
GM Pro user
Репутация: 280
Offline
Пол:  Награды:   ![За постоянность! [200 дней на форуме] За постоянность! [200 дней на форуме]](http://forum.hellroom.ru/awards/78e87f17e3713947881315332c8ce619_hellroomforum_time_silver.gif) ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](http://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)
API: GameMaker Studio Free
Сообщений: 971
|
 |
« Ответ #217 : Февраль 19, 2018, 02:26:10 » |
|
Набросал грубый скрипт, что позволит получить угол грани у объекта. ///collision_get_angle(x, y, angle, lenght, object, prec, notme) var xx, yy, angle, lenght, steps, obj, prec, notme; xx = argument0; // X позиция коллизии yy = argument1; // Y позиция коллизии steps = 18; // Шагов (360 / 20); angle = round(argument2 / steps) * steps; // Округляем значение угла lenght = argument3; // Длина сенсоров obj = argument4; // Искомый объект prec = argument5; // Точная маска notme = argument6; // Исключить вызывающий экземпляр
var step = 360 div steps; // Текущий шаг, выраженный в значении угла var x1, y1, x2, y2; // Коодинатые точки вершин сенсоров x1 = xx - dcos(angle) * lenght; y1 = yy - dsin(angle) * lenght; x2 = xx - dcos(angle) * lenght; y2 = yy + dsin(angle) * lenght; var angle1, angle2; // Собственные значения угла для каждого сенсора angle1 = 0; angle2 = 0;
// Первый сенсор полуокружности while (angle1 < 180){ var c1; x1 = xx - dcos(-angle + angle1) * lenght; y1 = yy - dsin(-angle + angle1) * lenght; c1 = collision_point(floor(x1), floor(y1), obj, prec, notme); if c1 == noone angle1 += steps else break;} // Второй сенсор полуокружности while (angle2 < 180){ var c2; x2 = xx - dcos(angle + angle2) * lenght; y2 = yy + dsin(angle + angle2) * lenght; c2 = collision_point(floor(x2), floor(y2), obj, prec, notme); if c2 == noone angle2 += steps else break;}
return floor(point_direction(x1,y1,x2,y2));
~В GM не нашел что-то, что позволяет работать с векторами. С фикстурой тоже не нашел ничего подходящего. ~~Мне кажется, что это можно доработать... Как уже говорил, угол отражения вычисляется одной строкой: var reflection = mirror + angle_difference(mirror, dir); Это не то, что мне нужно. Ваш код создает угол, симметричный заданному, а мой - отраженный. Ось выступает в качестве поверхности отражения, а не симметрии. Я сначала думал, что у меня тоже как-то не так работает. Проверил - совпало как у Dmi7ry, только аргументы местами не там. ///vector_reflect(vector_angle, planar_angle) var a, b, c; a = argument0; b = argument1;
c = b - (angle_difference(a, b));
return(c);
|
|
|
|
|
Записан
|
|
|
|
Goo
ну типа
GM Pro user
Репутация: 163
Offline
Пол:  Награды:  ![Второе место на HellRoom Jam #9 [Антибиотик] Второе место на HellRoom Jam #9 [Антибиотик]](http://forum.hellroom.ru/awards/195ce38974a80fb1fe0e6909737628c8_hj9_silver-1.gif)
API: GameMaker Studio 2
Деятельность: программист
Сообщений: 1345
|
 |
« Ответ #218 : Февраль 19, 2018, 09:41:03 » |
|
Особо не вникал в работу скрипта (и увы не проверял его на практике), но что-то мне подсказывает что если тут 2 минуса x1 = xx - dcos(-angle + angle1) * lenght; y1 = yy - dsin(-angle + angle1) * lenght;
то тут, должно быть 2 плюса x2 = xx - dcos(angle + angle2) * lenght; y2 = yy + dsin(angle + angle2) * lenght;
Если я не прав, поправь меня.
|
|
|
|
|
Записан
|
|
|
|
Neo
*LisenokArtist
GM Pro user
Репутация: 280
Offline
Пол:  Награды:   ![За постоянность! [200 дней на форуме] За постоянность! [200 дней на форуме]](http://forum.hellroom.ru/awards/78e87f17e3713947881315332c8ce619_hellroomforum_time_silver.gif) ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](http://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)
API: GameMaker Studio Free
Сообщений: 971
|
 |
« Ответ #219 : Февраль 19, 2018, 13:57:57 » |
|
Особо не вникал в работу скрипта (и увы не проверял его на практике), но что-то мне подсказывает что если тут 2 минуса x1 = xx - dcos(-angle + angle1) * lenght; y1 = yy - dsin(-angle + angle1) * lenght;
то тут, должно быть 2 плюса x2 = xx - dcos(angle + angle2) * lenght; y2 = yy + dsin(angle + angle2) * lenght;
Если я не прав, поправь меня. Перепроверил. Вроде правильно. Вершины сенсоров создаются за + 180 от указанного значения угла. Один из сенсоров перемещается на 180 градусов по часовой, второй против часовой до тех пор, пока не обнаружат столкновение. За место collision_ можно использовать тот же place_ при желании. Не знаю что лучше будет использовать.
|
|
|
|
|
Записан
|
|
|
|
Goo
ну типа
GM Pro user
Репутация: 163
Offline
Пол:  Награды:  ![Второе место на HellRoom Jam #9 [Антибиотик] Второе место на HellRoom Jam #9 [Антибиотик]](http://forum.hellroom.ru/awards/195ce38974a80fb1fe0e6909737628c8_hj9_silver-1.gif)
API: GameMaker Studio 2
Деятельность: программист
Сообщений: 1345
|
 |
« Ответ #220 : Февраль 19, 2018, 16:25:16 » |
|
Да все верно, проверил. Да и если приглядется x1 = xx - dcos(angle) * lenght; y1 = yy - dsin(angle) * lenght; x2 = xx - dcos(angle) * lenght; y2 = yy + dsin(angle) * lenght;
{-;-;-;+} x1 = xx - dcos(-angle + angle1) * lenght; y1 = yy - dsin(-angle + angle1) * lenght;
x2 = xx - dcos(angle + angle2) * lenght; y2 = yy + dsin(angle + angle2) * lenght;
тоже {-;-;-;+}, я просто не сразу заметил, ну а там из-за симметрии функций... и т. д.
|
|
|
|
|
Записан
|
|
|
|
|
S_Kleer
|
 |
« Ответ #221 : Август 02, 2018, 20:15:26 » |
|
Скрипт, который возвращает позицию и индекс вертикального, равностороннего по высоте и ширине гексагона. Подойдёт для игр с гексагональной картой. Не уверен, что код самый правильный, но он работает. Проверял на гексагонах размером 64х64 и 32х32. Объявляем макросы: #macro HEX_W 32 // 32 ширина гексагона, можно использовать sprite_get_width #macro HEX_PART (HEX_W / 4) // Четверть высота гексагона, для проверок двух верхних углов #macro HEX_H (HEX_W - HEX_PART) // Высота гексагона (Полная ширина минус четверть)
#macro HEX_W_HALF (HEX_W / 2) // Половина ширины гексагона (пригодится для смещений) Сам скрипт: /// @desc Возвращает индекс и позицию гексагона
// Представляем координаты курсора в виде индексов var mx = mouse_x div HEX_W; var my = mouse_y div HEX_H;
// Смещение var off_x = 0;
// Если каждая вторая строка чётная, то смещаем координаты на половину ширины гексагона if my mod 2 = 1 { off_x = HEX_W_HALF; mx = (mouse_x + off_x) div HEX_W; }
// Обновляем координаты текущего гексагона mx = mx * HEX_W - off_x; my = my * HEX_H;
// Если курсор в левом верхнем углу, то смещаем координаты гексагона влево вверх if point_in_triangle(mouse_x, mouse_y, mx, my, mx + HEX_W_HALF, my, mx, my + HEX_PART) { mx = mx - HEX_W_HALF my = my - HEX_H }
// Если курсор в правом верхнем углу, то смещаем координаты гексагона вправо вверх if point_in_triangle(mouse_x, mouse_y, mx + HEX_W_HALF, my, mx + HEX_W, my, mx + HEX_W - 1, my + HEX_PART) { mx = mx + HEX_W_HALF; my = my - HEX_H; }
// Возвращаем индекс и позицию гексагона return [mx div HEX_W, my div HEX_H, mx, my]; Пример использования: var result = mouse_hex();
// Индексы гексагона hex_i = result[0]; hex_j = result[1];
// Координаты гексагона hex_x = result[2]; hex_y = result[3];
// При нажатии лкм, ставим на карту лес if mouse_check_button_pressed(mb_left) { map[hex_i, hex_j] = 5; // Допустим 5 - это лес }
// Рисуем гексагональный курсор точно на клетке draw_sprite(s_cursor, 0, hex_x, hex_y); Код заточен под GMS2, но его несложно переделать под другие версии.
|
|
|
|
« Последнее редактирование: Август 02, 2018, 20:21:02 от S_Kleer »
|
Записан
|
Коты - Мирители
|
|
|
Goo
ну типа
GM Pro user
Репутация: 163
Offline
Пол:  Награды:  ![Второе место на HellRoom Jam #9 [Антибиотик] Второе место на HellRoom Jam #9 [Антибиотик]](http://forum.hellroom.ru/awards/195ce38974a80fb1fe0e6909737628c8_hj9_silver-1.gif)
API: GameMaker Studio 2
Деятельность: программист
Сообщений: 1345
|
 |
« Ответ #222 : Сентябрь 30, 2018, 21:03:20 » |
|
срипт "складываюший" два списка 0 - аргумент основной лист, 1 - лист добавляемый в конец первого, 2 - если == false, изменяем 1-й лист, добавляя 2-й в конец если == true, создаем новый лист, являющийся их суммой, не меняя содержимое исходных /// ds_list_plus_list(main_list, sourse_list, change[boolean]) // return ds_list
var l = argument0; var s = argument1; var c = argument2;
if !ds_exists(l, ds_type_list) show_error("data structure is not exists", 1); if !ds_exists(s, ds_type_list) show_error("data structure is not exists", 1); var z = undefined;
if c { z = ds_list_create(); ds_list_copy(z, l); }
for (var i = 0; i < ds_list_size(s); i++) { var v = s[| i]; if is_undefined(v) continue; if !c ds_list_add(l, v); else ds_list_add(z, v); }
if c return z; return l;
Добавлено: Сентябрь 30, 2018, 21:16:08 пожалуй можно и так /// ds_list_plus_list(main_list, sourse_list, change[boolean]) // return ds_list
var l = argument0; var s = argument1; var c = argument2;
if !ds_exists(l, ds_type_list) show_error("data structure is not exists", 1); if !ds_exists(s, ds_type_list) show_error("data structure is not exists", 1); var z = l;
if c { z = ds_list_create(); ds_list_copy(z, l); }
for (var i = 0; i < ds_list_size(s); i++) { var v = s[| i]; if is_undefined(v) continue; ds_list_add(z, v); } return z;
Добавлено: Ноябрь 23, 2018, 17:32:20 скрипт сравнивающий строки... возвращает массив. 0-й индекс - степень сравнения. 1-й количество схожих символов если строки не равны возвращает 0 - не равны 0 - схожих символов если строки равны частично возвращает 1 - частично равны n - схожих символов если строки равны целиком 2 - целиком равны длина сравниваемых строк - схожих символов #macro NOT_EQUALLY 0 #macro NEARLY_EQUAL 1 #macro EQUALLY 2 #macro COMPARISON_VALUE 0 #macro INDEX 1
/// string_compare(str, str1) // return: array
var str_0 = argument0; var str_1 = argument1;
var cmp_val = NOT_EQUALLY; var arr_for_ret = array_create(2); var str_len_0 = string_length(str_0); var str_len_1 = string_length(str_1); var str_len = min(str_len_0, str_len_1); var i;
for (i = 1; i < str_len + 1; i++;) { var char_0 = string_char_at(str_0, i); var char_1 = string_char_at(str_1, i); if char_0 != char_1 break; cmp_val = NEARLY_EQUAL; }
if cmp_val && (i - 1 == str_len) { if str_len_0 == str_len_1 { cmp_val = EQUALLY; } }
arr_for_ret[COMPARISON_VALUE] = cmp_val; arr_for_ret[INDEX] = i - 1; return arr_for_ret;
|
|
|
|
« Последнее редактирование: Ноябрь 23, 2018, 20:31:05 от Goo »
|
Записан
|
|
|
|
SilentPhil
Norland
GM Pro user
Репутация: 479
Offline
Пол:  Награды: ![Первое место на HellRoom Jam #7 [Hell in Your Fridge] Первое место на HellRoom Jam #7 [Hell in Your Fridge]](http://forum.hellroom.ru/awards/9f62be4ccdd73fb5efadd1f34c96ed53_hj7_gold_original.gif)  ![За постоянность! [50 дней на форуме] За постоянность! [50 дней на форуме]](http://forum.hellroom.ru/awards/d09ba76b977b84fd4f5dcfae1f2918ff_hellroomforum_time_copper.gif) ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](http://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)  ...
API: GameMaker Studio 2
Деятельность: GML, Pixel Art
Сообщений: 1363
|
 |
« Ответ #223 : Ноябрь 23, 2018, 19:14:43 » |
|
Для сравнения строк хорошо использовать алгоритм расстояние Ливенштейна. Даже реализовал его на гм8 в прошлом веке.
|
|
|
|
|
Записан
|
|
|
|
Neo
*LisenokArtist
GM Pro user
Репутация: 280
Offline
Пол:  Награды:   ![За постоянность! [200 дней на форуме] За постоянность! [200 дней на форуме]](http://forum.hellroom.ru/awards/78e87f17e3713947881315332c8ce619_hellroomforum_time_silver.gif) ![За лояльность! [+150 репутации] За лояльность! [+150 репутации]](http://forum.hellroom.ru/awards/d3334d4fd3e3124bd7ba2ce29fab5c8a_hellroomforum_good_tin.gif)
API: GameMaker Studio Free
Сообщений: 971
|
 |
« Ответ #224 : Июль 12, 2019, 12:49:44 » |
|
Лучше названия не придумал. Скрипт возвращает значение 1 если находится между минимум и максимум и 0 если на границах. С плавающей точкой, разумеется. ///rise_fall(value, min, max); var min_, max_, val_; min_ = argument1; max_ = argument2; val_ = clamp(argument0, min_, max_);
var s, m, l; s = max_ - min_; m = s div 2; v = val_ - min_; l = 1 - (abs((m - v) * 2) / s);
return l; Следующий скрипт рисует линию с прозрачностью на границах. Работает в паре с скриптом выше. ///draw_line_alpha_rise_fall(x1, y1, x2, y2); var x1, y1, x2, y2; x1 = argument0; y1 = argument1; x2 = argument2; y2 = argument3;
var lx, ly, sx, sy, ii; ii = 2; lx = (x2 - x1); ly = (y2 - y1); sx = lx / ii; sy = ly / ii;
draw_primitive_begin(pr_linestrip);
for (var i = 0; i <= ii; i ++){ var xx, yy, alpha; xx = x1 + sx * i; yy = y1 + sy * i; alpha = rise_fall(i, 0, ii); draw_set_alpha(alpha); draw_vertex(xx, yy);}
draw_primitive_end(); draw_set_alpha(1);
return true; Можно было проще, ну так получилось... Добавлено: Август 14, 2019, 21:52:20 Простой скрипт смешивает каналы двух цветов. Канал смешиваемого цвета необходимо получить функцией color_get_red/green/blue соответственно. ///merge_channel(channel a, channel b, amount) //amount- насколько тот или иной цвет должен быть смешан. Значения от 0 до 1.0 var a, b; a = argument0 * argument2; b = argument1 * (1 - argument2); return a + b;
|
|
|
|
« Последнее редактирование: Август 14, 2019, 21:52:20 от Neo »
|
Записан
|
|
|
|
|