Всем привет!
Значит для написания одной из функции(Для работы в паблик), столкнулся с проблемой с mp.raycasting.testPointToPoint.
На WIKI RageMp указан такой синтаксис:
Специально для вас накидал тестовый вариант на JS.
Index file
В чем проблема:
1) mp.raycasting.testPointToPoint не игнорирует созданный object, из-за чего сталкивается с ним, и с каждым кадром объект становится все ближе к камере игрока.
2) На RageMP WIKI в "Client-Side example" флаг указывается одной цифрой , и судя по всему это правильно, потому-что когда я ставил flag для взаимодействия с педами(4), то raycast по понятным причинам начал триггерится только на мне.
3) Когда я поставил "flag = 1", то mp.raycasting.testPointToPoint так-же триггерится на этом объекте, хотя flag 1 предназначен для "Intersect with map",
а для "Intersect with objects" есть отдельный 16-ый флаг.
Мои попытки исправить данный казус:
Работающим решением в данном случае выступил код:
До последнего пытался что-то сделать, но нормально это не работает.
Главный вопрос - Кто с этим сталкивался? Что происходит? И как это пофиксить?
Я бы мог оставить все как есть, но!
Возможно, данная проблема может возникнуть когда нужно будет игнорировать каких нибудь игроков сервера, и если я буду менять позицию игроков, то столкнусь с рассинхроном и потерей оптимизации за счет entityStreamIn.
Но так-же стоит добавить, что я не знаю будет ли эта догадка про игнорирование игроков верна, так-как проверить ее пока не с кем.
Значит для написания одной из функции(Для работы в паблик), столкнулся с проблемой с mp.raycasting.testPointToPoint.
На WIKI RageMp указан такой синтаксис:
Специально для вас накидал тестовый вариант на JS.
Index file
JavaScript:
setTimeout(() => {
const object = mp.objects.new(mp.game.joaat('prop_paints_can07'), new mp.Vector3(0, 0, 71)); //Объект который будет перемещен
const distance = 100;
const camera = mp.cameras.new('gameplay');
const getGameplayCameraDirection = () => camera.getDirection();
const getGameplayCameraPosition = () => camera.getCoord();
mp.events.add('render', () => {
const pos = getGameplayCameraPosition();
const dir = getGameplayCameraDirection();
const farAway = new Vector3(dir.x * distance + pos.x, dir.y * distance + pos.y, dir.z * distance + pos.z);
const raycast = mp.raycasting.testPointToPoint(pos, farAway, [object], 1);
if (!raycast) {
return;
}
console.log(raycast.entity == object); //true
object.position = raycast.position;
});
}, 5000);
В чем проблема:
1) mp.raycasting.testPointToPoint не игнорирует созданный object, из-за чего сталкивается с ним, и с каждым кадром объект становится все ближе к камере игрока.
2) На RageMP WIKI в "Client-Side example" флаг указывается одной цифрой
3) Когда я поставил "flag = 1", то mp.raycasting.testPointToPoint так-же триггерится на этом объекте, хотя flag 1 предназначен для "Intersect with map",
а для "Intersect with objects" есть отдельный 16-ый флаг.
Мои попытки исправить данный казус:
JavaScript:
const raycast = mp.raycasting.testPointToPoint(pos, farAway, [object], 1); //not working
const raycast = mp.raycasting.testPointToPoint(pos, farAway, [object.handle], 1); //not working
const raycast = mp.raycasting.testPointToPoint(pos, farAway, object, 1); //not working
const raycast = mp.raycasting.testPointToPoint(pos, farAway, object.handle, 1); //not working
Работающим решением в данном случае выступил код:
JavaScript:
setTimeout(() => {
const object = mp.objects.new(mp.game.joaat('prop_paints_can07'), new mp.Vector3(0, 0, 71)); //Объект который будет перемещен
const distance = 100;
const camera = mp.cameras.new('gameplay');
const getGameplayCameraDirection = () => camera.getDirection();
const getGameplayCameraPosition = () => camera.getCoord();
mp.events.add('render', () => {
const pos = getGameplayCameraPosition();
const dir = getGameplayCameraDirection();
const farAway = new Vector3(dir.x * distance + pos.x, dir.y * distance + pos.y, dir.z * distance + pos.z);
object.position = new mp.Vector3(0, 0, 71); //add this
const raycast = mp.raycasting.testPointToPoint(pos, farAway, [object], 1);
if (!raycast) {
return;
}
console.log(raycast.entity == object); //false
object.position = raycast.position; //В таком случае это работает нормально
});
}, 5000);
До последнего пытался что-то сделать, но нормально это не работает.
Главный вопрос - Кто с этим сталкивался? Что происходит? И как это пофиксить?
Я бы мог оставить все как есть, но!
Возможно, данная проблема может возникнуть когда нужно будет игнорировать каких нибудь игроков сервера, и если я буду менять позицию игроков, то столкнусь с рассинхроном и потерей оптимизации за счет entityStreamIn.
Но так-же стоит добавить, что я не знаю будет ли эта догадка про игнорирование игроков верна, так-как проверить ее пока не с кем.