10.07.2014, 22:56
Здравствуйте.
Вопрос по поводу OnPlayerWeaponShot. При выстреле в объект (BULLET_HIT_TYPE_OBJECT) калбэк дает координаты попадания относительно объекта, в который попали. В моем же случае необходимо получить глобальные координаты попадания. Если бы не ротация - всё было бы просто. GetObjectPos и к каждой координате прибавляли бы fX,fY,fZ соответственно. Но объект может быть повернут (ObjectRot) так, что таким способом координаты будут ложными. И тут уже необходимо хорошо знать математику. Вот я и обращаюсь за помощью. Возможно, кто-то считал себе или видел где такое, возможно кто-то и помочь захочет. Буду благодарен. Код ниже:
Вопрос по поводу OnPlayerWeaponShot. При выстреле в объект (BULLET_HIT_TYPE_OBJECT) калбэк дает координаты попадания относительно объекта, в который попали. В моем же случае необходимо получить глобальные координаты попадания. Если бы не ротация - всё было бы просто. GetObjectPos и к каждой координате прибавляли бы fX,fY,fZ соответственно. Но объект может быть повернут (ObjectRot) так, что таким способом координаты будут ложными. И тут уже необходимо хорошо знать математику. Вот я и обращаюсь за помощью. Возможно, кто-то считал себе или видел где такое, возможно кто-то и помочь захочет. Буду благодарен. Код ниже:
PHP код:
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
if(hittype == BULLET_HIT_TYPE_OBJECT)
{
new Float:pos[3]; GetObjectPos(hitid,pos[0],pos[1],pos[2]);
new Float:rot[3]; GetObjectRot(hitid,rot[0],rot[1],rot[2]);
//pos[0]+=fX*...//Вот тут и надо вести подсчеты
//pos[1]+=fY*...//sin'уси - cos'инусы будут, как же без них.
//pos[2]+=fZ*...
CreateObject(model,pos[0],pos[1],pos[2],0.0,0.0,0.0);//Этот объект должен будет появляться на месте попадания
}
return true;
}