This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Вопрос Аналог Camera::ScreenPointToRay

mp.flow

Участник портала
9 Май 2022
39
11
68
Есть ли аналог Camera::ScreenPointToRay в RageMP? Мне нужно создать рейкаст от позиции мыши игрока.
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,490
239
100
Да, в RageMP есть аналог Camera::ScreenPointToRay. Вы можете использовать функцию mp.game.cam.getGameplayCamCoord(), чтобы получить позицию камеры игрока, и mp.game.cam.getGameplayCamRot(), чтобы получить ротацию камеры игрока. Затем вы можете использовать эти данные, чтобы создать луч с помощью mp.raycasting.testPointToPoint(). Вот пример кода:

JavaScript:
// Получаем позицию и ротацию камеры игрока
const camPos = mp.game.cam.getGameplayCamCoord();
const camRot = mp.game.cam.getGameplayCamRot(2);

// Получаем направление луча из ротации камеры
const direction = mp.game.object.offsetFromCoords(camPos.x, camPos.y, camPos.z, camRot.x, camRot.y, camRot.z);

// Создаем луч от позиции мыши до бесконечности
const raycast = mp.raycasting.testPointToPoint(camPos.x, camPos.y, camPos.z, direction.x, direction.y, direction.z, -1);

// Проверяем, есть ли пересечение с объектом
if (raycast.didHitEntity) {
    // Обработка пересечения с объектом
    const hitEntity = raycast.hitEntity;
    console.log("Пересечение с объектом:", hitEntity);
} else {
    // Пересечение не найдено
    console.log("Пересечение не найдено");
}

Помните, что данная функция будет работать только на сервере, так как рейкасты должны выполняться на сервере в многопользовательской среде.
 

mp.flow

Участник портала
9 Май 2022
39
11
68
Предоставленный код проводит raycast от камеры "gameplay" и игнорирует позицию курсора. Мне нужно провести Raycast от камеры которую я создал до точки на которую наведён курсор на экране
 

mippoosedev

Гуру
BackEnd developer
2 Мар 2021
292
127
100
можно получить позицию мыши на экране, получить необходимый угол и кинуть рейкаст
 

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,461
868
181
34
Код:
const cursorWorldPosition = mp.game.graphics.screen2dToWorld3d(new mp.Vector3(mp.gui.cursor.position[0], mp.gui.cursor.position[1], 0));
const start = new mp.Vector3(0, 0, 0);
const capsuleRadius = 1;
const raycast = mp.raycasting.testCapsule(start, cursorWorldPosition , capsuleRadius, this.player, 8 | 4);
 

mp.flow

Участник портала
9 Май 2022
39
11
68
Я так попробовал но насколько я понимаю метод screen2dToWorld3d использует камеру "gameplay" а я пытаюсь сделать от созданной скриптом камеры.
 

Vermilion

Высший разум
High developer
BackEnd developer
FrontEnd developer
29 Сен 2021
1,461
868
181
34
const start = new mp.Vector3(0, 0, 0);

Здесь указывай начало луча
 

mp.flow

Участник портала
9 Май 2022
39
11
68

Similar threads