#javascript #jquery #html #google-chrome #three.js
#javascript #jquery #HTML #google-chrome #three.js
Вопрос:
Я использую блокировку указателя для захвата курсора в игре, которую я разрабатываю на JavaScript с three.js . Я выполнил свой базовый поиск в Google, но, похоже, не могу понять, почему в Chrome OS курсор, похоже, не перемещается. Если вы посмотрите на http://scheib.github.io/HTMLMisc/PointerLockAndFullscreen.html Блокировка указателя работает просто отлично, и есть даже хороший «курсор», который соответствует движению!
Вывод на консоль JavaScript (ведение журнала — это я):
Я «фабрикую» перемещение X / Y с
if (evt.movementX === undefined) {
evt.movementX = evt.screenX - lastx;
evt.movementY = evt.screenY - lasty;
lastx = evt.screenX;
lasty = evt.screenY;
}
На случай, если вам интересно, я просто настраиваю базовую графику.
Ответ №1:
Курсор не перемещается, потому что вы его «заблокировали». Но evt.movementX
и evt.movementY
указывает направление движения.
Вы должны обновить положение или направление вашей камеры и отобразить результат, чтобы было ощущение, что она движется.
Ответ №2:
При блокировке указателя доступны только свойства movementX и movementY. Все остальные «обычные» координаты положения намеренно устанавливаются равными нулю.
В режиме блокировки указателя воспринимается, что курсора нет, только движение мыши, поэтому для курсора, которого не существует, нет (ScreenX, screenY), а также (offsetX, offsetY) по той же причине.
Только (movementX, movementY) по дизайну.