Динаическое движение объектов [Тригонометрия]
#1

доброго времени суток, товарищи
срочно нужна помощь по написанию функции движения корабля

в общем нужно превратить объекты в настоящий плавучий корабль.

есть корабль который состоит из 40 объектов, нужно сделать чтобы корабль двигался вперед и мог поворачивать, частично я сделал "движение вперед", я не знаком с тригонометрией и вообще плохо соображаю в позиционировании.

мои наброски

PHP Code:
control_aero_carrier(control)
{
    switch(
control)
    {
        case 
0// движение судна вперед по X
        
{
            
aerocarrier_speed++;
            if (
aerocarrier_speed 5) return false;
            else if (
aerocarrier_speed == 1)
            {
                
aerocarrier_timer SetTimer("MoveCarrier"500true);
            }
            else if (
aerocarrier_speed == 2)
            {
                
KillTimer(aerocarrier_timer);
                
aerocarrier_timer SetTimer("MoveCarrier"1000true);
            }
        }
        case 
1// движение право
        
{
            static 
Float:xFloat:yFloat:zFloat:rxFloat:ryFloat:rz;
            for (new 
0sizeof(aerocarrier); ++)
            {
                
GetDynamicObjectPos(aerocarrier[i], xyz);
                
GetDynamicObjectRot(aerocarrier[i], rxryrz);
                
MoveDynamicObject(aerocarrier[i], xyz1.0rxryrz-5.0);
            }
        }
    }
    return 
true;

Некоторые объекты после поворота начинают смещаться по x или y, я не знаю как сделать дальше.
Reply
#2

Двигай 1 главный объект, остальные приатач к нему .
Reply
#3

Quote:
Originally Posted by cm666
View Post
Двигай 1 главный объект, остальные приатач к нему .
Пробовал, атаченные объекты остаются на своих местах и в консоле пишет - мол объекты прикреплены и не могут быть передвинуты.

PHP Code:
[14:06:06MoveDynamicObjectObject is currently attached and cannot be moved 
PHP Code:
for (new 1sizeof(aerocarrier); ++)
{
    
AttachObjectToObjectEx(aerocarrier[i], 2831.45459, -2449.623296.763400.000000.0000090.00000xyzrxryrz);
    
AttachDynamicObjectToObject(aerocarrier[i], aerocarrier[0], xyzrxryrz);

Reply
#4

Так попробуй обычные объекты, не динамические
Reply
#5

Quote:
Originally Posted by Reim
View Post
Так попробуй обычные объекты, не динамические
Статические не вариант использовать.
Щас ради пробы, попробую.
Reply
#6

help
помогите с построением траектории
знаю что с помощью floatcos и floatsin, но не знаю как.
Reply
#7

Quote:
Originally Posted by nonamepawn
View Post
help
помогите с построением траектории
знаю что с помощью floatcos и floatsin, но не знаю как.
Тебе уже сказали наилучший вариант.
Но если хочешь немного геморроя то: https://sampforum.blast.hk/showthread.php?tid=491387
Reply
#8

Пытаюсь вот все сделать это, но некоторые объекты отклоняются от курса.
Как быть?



PHP Code:
GetDynamicObjectPos(aerocarrier[i], xyz), GetDynamicObjectRot(aerocarrier[i], rxryrz);
fx x+1.0*floatcos(rzdegrees), fy y+1.0*floatsin(rzdegrees);
MoveDynamicObject(aerocarrier[i], fxfyz1.0rxryrz); 
Те объекты которые отклоняются имеют rz=0.0
А те которые идут правильно rz=90.0
Reply
#9

я думаю всё дело в собейте, он высасывает ваш мозг
Reply
#10

в таком случае тебе не рекомендовано юзать динамические объекты. Инкогнито как то писал, что не все функции стримера гарантировано будут работать или работают исправно
"word of war"
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)