Русское сообщество по скриптингу

Положение модели относительно поверхности  [Решено]

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптинга для AMX Mod X.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Положение модели относительно поверхности

Сообщение hren_morjovui » 18 фев 2019, 14:29

Подскажите как развернуть любую модель относительно поверхности на которую наведён прицел? :shout:
"В этом мире неизбежны три вещи: смерть, налоги и гравитация."
Аватара пользователя
hren_morjovui
 
Сообщения: 258
Зарегистрирован: 29 май 2018, 09:15
Благодарил (а): 88 раз.
Поблагодарили: 22 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn
PHP
jQuery

Re: Положение модели относительно поверхности

Сообщение hren_morjovui » 18 фев 2019, 21:29

К примеру есть модель монеты, которая решкой смотрит по оси +Z, вот как сделать так чтобы по координатам прицела модель всегда была решкой вверх, относительно любой поверхности? ПОМОГИТЕ!!! :shout:
"В этом мире неизбежны три вещи: смерть, налоги и гравитация."
Аватара пользователя
hren_morjovui
 
Сообщения: 258
Зарегистрирован: 29 май 2018, 09:15
Благодарил (а): 88 раз.
Поблагодарили: 22 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn
PHP
jQuery

Re: Положение модели относительно поверхности

Сообщение fl0wer » 19 фев 2019, 16:20

Юзай нормаль.
Аватара пользователя
fl0wer
 
Сообщения: 1687
Зарегистрирован: 27 фев 2011, 21:35
Откуда: Россия, Ижевск
Благодарил (а): 240 раз.
Поблагодарили: 508 раз.
Опыт программирования: Больше трех лет
Языки программирования: C++, Java, PAWN

Re: Положение модели относительно поверхности

Сообщение hren_morjovui » 19 фев 2019, 21:28

fl0wer писал(а):Юзай нормаль.

та это то понятно, но модель по нормали хрен знает как ставиться. Словами порядок действий поясни если можно.
"В этом мире неизбежны три вещи: смерть, налоги и гравитация."
Аватара пользователя
hren_morjovui
 
Сообщения: 258
Зарегистрирован: 29 май 2018, 09:15
Благодарил (а): 88 раз.
Поблагодарили: 22 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn
PHP
jQuery

Re: Положение модели относительно поверхности

Сообщение flymic24 » 19 фев 2019, 22:58

Полученную нормаль преобразовывай в угол относительно поверхности и задавай его своему объекту
Аватара пользователя
flymic24
 
Сообщения: 209
Зарегистрирован: 05 окт 2012, 17:29
Откуда: Bryansk
Благодарил (а): 4 раз.
Поблагодарили: 76 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Положение модели относительно поверхности

Сообщение hren_morjovui » 20 фев 2019, 15:12

flymic24 писал(а):Полученную нормаль преобразовывай в угол относительно поверхности и задавай его своему объекту


а как отодвинуть созданную энтити от стены/углов и тд, по всем направлениям чтобы модель была только на стене и не висела половина в воздухе?
"В этом мире неизбежны три вещи: смерть, налоги и гравитация."
Аватара пользователя
hren_morjovui
 
Сообщения: 258
Зарегистрирован: 29 май 2018, 09:15
Благодарил (а): 88 раз.
Поблагодарили: 22 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn
PHP
jQuery

Re: Положение модели относительно поверхности

Сообщение flymic24 » 20 фев 2019, 18:03

Умножай полученную нормаль на расстояние в юнитах на которое отодвинуть нужно
Код: Выделить всё
xs_vec_mul_scalar(fVecNormal1.0fVecNormal); 
Аватара пользователя
flymic24
 
Сообщения: 209
Зарегистрирован: 05 окт 2012, 17:29
Откуда: Bryansk
Благодарил (а): 4 раз.
Поблагодарили: 76 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: Положение модели относительно поверхности  [Решено]

Сообщение hren_morjovui » 20 фев 2019, 21:02

flymic24 писал(а):Умножай полученную нормаль на расстояние в юнитах на которое отодвинуть нужно
Код: Выделить всё
xs_vec_mul_scalar(fVecNormal, 1.0, fVecNormal);

Спасибо, а влево/вправо как двигать не подскажешь?

Добавлено спустя 16 минут 26 секунд:
Код: Выделить всё

global_get
(glb_v_right, v_right);
xs_vec_mul_scalar(v_right, -30.0, v_right); 


работает как вперед/назад :dntknw:

Добавлено спустя 47 минут 51 секунду:
Всё разобрался. Угол взял у энтити игрока, относительно того куда спотрит игрок сдвигаем влево объект.

Код: Выделить всё

            new Float
:fOrigin[3], Float:fAngles[3], Float:fAnglesLeft[3]

            pev(player_id, pev_angles, fAngles)
            pev(entity_id, pev_origin, fOrigin)

            angle_vector(fAngles, ANGLEVECTOR_RIGHT, fAnglesLeft)

            xs_vec_neg(fAnglesLeft, fAnglesLeft)

            fAnglesLeft[2] = -fAnglesLeft[2]

            xs_vec_mul_scalar(fAnglesLeft, 30.0, fAnglesLeft) //влево на 20 юнитов

            xs_vec_add(fAnglesLeft, fOrigin, fOrigin)

            engfunc(EngFunc_SetOrigin, entity_id, fOrigin);


"Вдохновился" тут Вы должны зарегистрироваться, чтобы видеть ссылки.

Добавлено спустя 37 минут 47 секунд:
Может кому пригодиться

Код: Выделить всё

stock edit_origin
(Float:origin_fl[3/*текущая позиция объекта*/Float:angles_fl[3/*текущие углы объекта*/Float:shift_num /*число сдвига (может быть отрицательным)*/, const mode /*0 - вперед/назад, 1 - вверх/вниз, 2 - вправо/влево */Float:output_origin[3/*массив для записи новых координат*/)
{
    static 
Float:origin_edit_fl[3];

    switch(
mode)
    {
        case 
0:
        {
            
angle_vector(angles_flANGLEVECTOR_FORWARDorigin_edit_fl);
        }
        case 
1:
        {
            
angle_vector(angles_flANGLEVECTOR_UPorigin_edit_fl);
        }
        case 
2:
        {
            
angle_vector(angles_flANGLEVECTOR_RIGHTorigin_edit_fl);
        }
    }

    
xs_vec_mul_scalar(origin_edit_flshift_numorigin_edit_fl);
    
xs_vec_add(origin_edit_florigin_floutput_origin);
}

//К примеру сдвинуть объект влево относительно углов игрока

static Float:player_angles[3],Float:entity_origin[3],Float:origin_new[3];

pev(player_idpev_anglesplayer_angles);
pev(entity_idpev_originentity_origin);

edit_origin(entity_originplayer_angles, -20.02origin_new);

engfunc(EngFunc_SetOriginentity_idorigin_new);
 
"В этом мире неизбежны три вещи: смерть, налоги и гравитация."
Аватара пользователя
hren_morjovui
 
Сообщения: 258
Зарегистрирован: 29 май 2018, 09:15
Благодарил (а): 88 раз.
Поблагодарили: 22 раз.
Опыт программирования: Больше трех лет
Языки программирования: Pawn
PHP
jQuery


Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12