forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Постаянная скорость управления мышью (http://forum.boolean.name/showthread.php?t=5638)

Crystal 24.01.2008 18:17

Постаянная скорость управления мышью
 
Здравствуйте!
Подскажите как сделать ограничитель скорости управления мышью.

Управление делал так:
Код:

TSpeed#=0.10

mXSp=MouseXSpeed()
mYSp=MouseYSpeed()

    TurnEntity User,mYSp*TSpeed#,0,0
    TurnEntity Usersphere,0,-mXSp*TSpeed#,0

Тут скорость поворота зависит от TSpeed.
Но это не совсем то, что мне надо. Ведь если я буду дёргать мышь быстрее
то и поворачиваться объект будет быстрее.
Мне надо как бы не ограничитель, а постоянную скорость поворота но, что бы
поворачивалось в тех направлениях куда я поворачиваю мышь.
Тобиш влево, вправо, вверх, вниз.

Какие у вас мысли по этому поводу?

HolyDel 24.01.2008 18:25

Ответ: Постаянная скорость управления мышью
 
Код:

TSpeed#=0.10

mXSp=MouseXSpeed()
mYSp=MouseYSpeed()

    TurnEntity User,sgn(mYSp)*TSpeed#,0,0
    TurnEntity Usersphere,0,-sgn(mXSp)*TSpeed#,0

пс. возможно не sgn а sign или что то типа етого.

Crystal 24.01.2008 18:36

Ответ: Постаянная скорость управления мышью
 
Вай спасибо помог!

HolyDel 24.01.2008 18:39

Ответ: Постаянная скорость управления мышью
 
кстати, замечу что способ недостаточно хорош. направлений поворота будет тоько 8.
правельнее было бы рассчитывать вектор направления мыша от центра и нормаировать его (естественно если его модуль отличен от нуля).
и поворачивать камеру в соотвествии с этим (уже отнормированным) вектором (естественно только если его длинна больше нуля)

Crystal 24.01.2008 18:44

Ответ: Постаянная скорость управления мышью
 
да точно хз как делать. я тут наконецто решился взяться за дипломник,
ибо несколько месяцев осталось до защиты.

за 10 минут накатал пока управление юзером.
буду использывать в проекте все свои наработки блица

должно получиться чёто типа закоса под механойдов с плохой
графикой и кривой физикой.

а также вейпоинты будут нужны вот тока не знаю делать мне их через попу
или по примеру дипломата. по дипломату кода меньше но делать сложнее.

HolyDel 24.01.2008 18:49

Ответ: Постаянная скорость управления мышью
 
что-то типа етого:

Код:

Graphics 640,480,16,2
SetBuffer BackBuffer()

While Not KeyDown(1)
        Cls
        mx=MouseXSpeed()
        my=MouseYSpeed()
       
        d#=Dist(mx,my,0,0)
        If d>0
                dx=mx/d*100
                dy=my/d*100
                Line 320,240,320+dx,240+dy       
        EndIf
       
        Flip
Wend

заместо Line 320,240,320+dx,240+dy , тебе надо будет писать вращение камеры. 100 - это модуль вектора.

dimanche13 24.01.2008 18:57

Ответ: Постаянная скорость управления мышью
 
Blitzerg а что сложного с вэйпоинтами? Создаешь тип WayPoint, а в типе врага создаешь список или массив всех точек движения. И потом двигаешься по ним, от одной к другой, через поворот.

Crystal 24.01.2008 19:03

Ответ: Постаянная скорость управления мышью
 
Диманче тебе может не сложно, а я не прогер и этого не делал никогда.
Я могу делать только то что уже делал.

Холи, я не понял что это делать должно?

HolyDel 24.01.2008 19:03

Ответ: Постаянная скорость управления мышью
 
конечно делай "по дипломату"
в противном случае можеш остаться без диплома/

Crystal 24.01.2008 19:04

Ответ: Постаянная скорость управления мышью
 
да я не на программиста учусь, проходили по паскалю только хелоу ворлд.
так что даж моя черезжоповая система выше того чему нас учили.
но делать всё равно надо по дипломату.

alcoSHoLiK 24.01.2008 21:55

Ответ: Постаянная скорость управления мышью
 
По сабжу, можно просто ограничивать скорость поворота.
mXSp=max(MouseXSpeed(), MAX_X_SPEED)
mYSp=max(MouseYSpeed(), MAX_Y_SPEED)

Нормализовать дорого. Возможно, быстрее будет найти угол поворота вектора направления и использовать его для просчета dx и dy.

HolyDel 24.01.2008 22:17

Ответ: Постаянная скорость управления мышью
 
alcoSHoLiK, смотри пост 6, там фейковая нормализация.
может и дорого, но один раз за игровой цикл можно и потерпеть ;)

alcoSHoLiK 25.01.2008 00:03

Ответ: Постаянная скорость управления мышью
 
Какая ж она фейковая? При нахождении расстояния корень считается. Там у тебя обычная нормализация.

Taugeshtu 25.01.2008 18:40

Ответ: Постаянная скорость управления мышью
 
Алко, мне кажется, или же в твоем коде скорость поворота - от Max_?_Speed до куда рука юзера дернется? (;
Нужно юзать не max(a,b), а min(a,b) (; Тогда заработает ограничение на скорость поворота.
Кстати, я как-то недавно проводил масштабные исследования скорости движения мышки... Так, для справки и помощи в настройке:
0-10 - это примерная скорость обычного "прогулочного" обзора в контре. Это когда ты только-только выходишь с базы в контре.
10-25 - это когда ты краем глаза засек снайпера, и хочешь быстро и точно на него навестись, зная, что он тебя не видит, но скоро может это сделать.
25-60 - ситуация аналогична выбежавшему из-за угла с маскировкой кровососу, который готов тебя убить на последних подступах к счастью. Т.е. уже не совсем осознанное движение, очень часто - от страха.
60-130 - cybersportsmen only. Сохранять на такой скорости осмысление картинки не-ре-аль-но без длительных и упорных тренировок. А уж точное позиционирование с такой скоростью - и вовсе предел мечтаний многих корейцев.

Больше 130 скорость мне возюканьем мшой по столу развить не удалось, как ни старался.

HolyDel 25.01.2008 18:42

Ответ: Постаянная скорость управления мышью
 
Цитата:

Больше 130 скорость мне возюканьем мшой по столу развить не удалось, как ни старался.
мышка нагревалась и плавилась ;)

кстати да, надо юзать min

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


Часовой пояс GMT +4, время: 17:45.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot