Как узнать что камера игрока смотрит в направлении персонажа?
#1

как сделать так, если камера игрок смотрит в том же направлении (< 180°), как игрок?

Я знаю, что нужно использовать GetPlayerFacingAngle и GetPlayerFrontVector но как? действительно плохо с такого рода вещи .. :/
+ + помогите pls
Reply
#2

Тригонометрию в школе изучал?
Reply
#3

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Тригонометрию в школе изучал?
net =D

v plohoy shkole ..
Reply
#4

ya znayu cos,sin,atan .. nu kak blat : xD
Reply
#5

вроде так

PHP код:
stock SetPlayerFacePlayer(playeridgiveplayerid)
{
    new 
Float:Pos[6];
    
GetPlayerPos(playeridPos[0], Pos[1], Pos[2]);
    
GetPlayerPos(giveplayeridPos[3], Pos[4], Pos[5]);
    
SetPlayerFacingAngle(playerid, (Pos[0] = -atan2((Pos[3] - Pos[0]), (Pos[4] - Pos[1]))));
    return 
SetPlayerFacingAngle(giveplayeridPos[0] + 180.0);

Reply
#6

это Y-y / X-x не x-x/y-y? почему -atan а не просто atan?что лучше?

Не имеет значения, это не то, что я хотел, я хочу найти, если игрок смотрит перед собой или сзади своим игроком. Я надеюсь, вы понимаете)
спасибо за помощь
Reply
#7

Quote:
Originally Posted by mastermax7777
Посмотреть сообщение
net =D

v plohoy shkole ..
Quote:
Originally Posted by mastermax7777
Посмотреть сообщение
ya znayu cos,sin,atan .. nu kak blat : xD
После такого даже помогать неохота. Разбирайтесь сами.
Reply
#8

ок .. Большое спасибо. Вы очень полезно. Я только пошутил ... -. -
Вы спрашиваете меня вопросы, которые я бы не спрашивал, если бы я знал, как это сделать ..
Reply
#9

Он американец походу
Reply
#10

Это школьная программа: определение угла наклона прямой по двум точкам на этой прямой.
Reply
#11

pawn Код:
new Float:scale=3.0, Float:rotZ;
    GetPlayerCameraFrontVector(playerid, fX,fY,fZ);
    GetPlayerCameraPos(playerid, camX,camY,camZ);
    GetPlayerPos(playerid, pposX,pposY,pposZ);
    shootX = camX + floatmul(scale, fX);
    shootY = camY + floatmul(scale, fY);
    rotZ = atan2(shootY-camY,shootX-camX);
    new str[128]; format(str,sizeof(str),"atan2: %.2f",rotZ);
    SendClientMessage(0, -1, str); //debug
    rotZ-=90.0;//это нужно, когда я тестировал?
    if(rotZ<0.0) rotZ+=360.0;
    if(rotZ>360.0) rotZ-=360.0;
    new Float:ang; GetPlayerFacingAngle(playerid, ang);
    format(str,sizeof(str),"GetPlayerAngle: %.2f atan: %.2f Angle-atan:%.2f",ang,rotZ,(rotZ-ang));
    SendClientMessage(0, -1, str);
    if(floatabs(rotZ-ang)<=90) SendClientMessage(0, -1, "Legit shot (Good)");
    else return SendClientMessage(0, -1, "NOT LEGIT (bad)");
Не работает очень хорошо, если угол составляет 350, и atan2 составляет 20, то 350 - 20< 90 это не удается,
почему то, что я делаю неправильно
Reply
#12

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Это школьная программа: определение угла наклона прямой по двум точкам на этой прямой.
Напомнило С2 из ЕГЭ по математике. Ещё можно через угл между плоскостью и прямой (через скалярное произведение векторов). Но этот аналог потяжелее.
Reply
#13

Quote:
Originally Posted by Gameyer
Посмотреть сообщение
Напомнило С2 из ЕГЭ по математике. Ещё можно через угл между плоскостью и прямой (через скалярное произведение векторов). Но этот аналог потяжелее.
Я кстати тут на форуме выкладывал уже функцию для нахождения данного угла, там вроде 3 строчки.
Reply
#14

Quote:
Originally Posted by Stepashka
Посмотреть сообщение
Я кстати тут на форуме выкладывал уже функцию для нахождения данного угла, там вроде 3 строчки.
Там больше и не нужно.
Reply
#15

gde ? O chom ve govorite?
Я делаю это правильно? посмотрите на код
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)