Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 28.02.2007, 02:29   #1
kai
AnyKey`щик
 
Регистрация: 13.11.2006
Сообщений: 1
Написано 0 полезных сообщений
(для 0 пользователей)
Обзор камеры и хотьба

Т.К. Я на данном форуме новенький...то возможно этот вопрос задовался...прошу заранее не ругать...
А вот сам вопрос:
я вот несколько часов бьюсь об клаву головой изза того, что не получается сделать обзор камерой...например как в ГТА...
тоесть я хочу сказать оттом, что когда игрок стоит на месте, и вращаеш камеру, то она вращается вокруг игрока...а когда нажимаешь ити например вперёд, то игрок должен разворачивацца в сторону камеры...
ну и соответственно кода игрок идёт и вращаеш камеру, то он с камерой вращается...Поверьте фсё перепробовал...почти получилось...но буду признателен если ктонить продемонстрирует свой код...а то я уже в отчаиньи...заранее снк
(Offline)
 
Ответить с цитированием
Старый 28.02.2007, 03:27   #2
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Re: Обзор камеры и хотьба

Код не продемонстрирую =) (я не дома), а только расскажу примерно как сделал бы я (точнее делал).

Я создавал Мэшь (огрок), с коллизией. Далее в позиции головы, создавал пивот, далее создавал камеру и паррентил к этому пивоту. Сразу при загрузки, поворачивал камеру немного вниз и двигал назад.
Далее в цикле, я ставил пивот на позицию мэше и немного выше, что-бы было в месте головы. А дальше игрался с "фичей", плавного поворота. Которая есть на форуме в полезных функциях. Всё.
http://www.boolean.name/showthread.php?t=1314 - вот тут хорошо рассказано, про повороты.
(Offline)
 
Ответить с цитированием
Старый 04.03.2007, 02:56   #3
HolyDel
 
Регистрация: 26.09.2006
Сообщений: 6,035
Написано 1,474 полезных сообщений
(для 2,707 пользователей)
Re: Обзор камеры и хотьба

при нажатии кнопки вперед - плавно поворачивать игрока на угол камеры.
(Offline)
 
Ответить с цитированием
Старый 04.03.2007, 05:35   #4
Platon
Знающий
 
Регистрация: 04.08.2006
Адрес: Россия
Сообщений: 297
Написано 39 полезных сообщений
(для 70 пользователей)
Re: Обзор камеры и хотьба

Устанавливаешь пивот на уровне головы игрока
Камеру ставишь позади игрока и крепишь к пивоту

Сам алгоритм такой:
Вычисляешь углы поворота для пивота камеры:
;Накапливаем углы через скорость перемещения мыши
;Уменьшаем скорость мыши умножением на коэффициент меньше единицы
ПоворотПоY = ПоворотПоY + MouseXSpeed() * ЧувствительностьМыши
ПоворотПоX = ПоворотПоX + MouseYSpeed() * ЧувствительностьМыши

;Сдвигаем мышь в центр экрана для того чтобы указатель мыши не
;достиг края экрана, иначе мышь остановится и скорость измерятся
;не будет соотвественно :)
MoveMouse(ПоловинаШириныЭкрана, ПоловинаВысотыЭкрана)

;Ограничиваем "переполнение" переменных и заодно устанавливаем макс. обзор камеры.
If (ПоворотПоY > 360) Then ПоворотПоY = 0
If (ПоворотПоY < 0) Then ПоворотПоY = 360
If (ПоворотПоX > 55) Then ПоворотПоX = 55
If (ПоворотПоX < -35) Then ПоворотПоX = -35

;Поворачиваем пивот камеры по вычисленным углам
RotateEntity(ПивотКамеры, ПоворотПоX, ПоворотПоY, 0)
Макс. обзор (вверх\вниз) можно сделать другим, но этот по-моему наиболее соотвествует "ГТАшному"

Далее нужно сделать движение игрока
If MouseDown(2) Then
    ;Сдвигаем тело игрока вперед
    MoveEntity(ТелоИгрока, 0, 0, СкоростьПеремещения)

    ;Узнаем координаты тела игрока
    ТелоИгрокаX = EntityX(ТелоИгрока)
    ТелоИгрокаY = EntityY(ТелоИгрока)
    ТелоИгрокаZ = EntityZ(ТелоИгрока)

    ;Позиционируем пивот камеры на место тела игрока (точнее его головы)
    ;в данном случае высота игрока 2 метра :) поэтому сдвигаем пивот от
    ;центра тела игрока вверх на 2 единицы
    PositionEntity(ПивотКамеры, ТелоИгрокаX, ТелоИгрокаY + 2, ТелоИгрокаZ)

    ;Проверяем разницу углов поворота тела игрока и пивота камеры
    ;Таким образом определяем скорость направления тела игрока
    ;на направление камеры - если игрок только начинает движение и
    ;камера направлена в сторону, то игрок будет направляться медленно,
    ;иначе - быстро
    ;Оператор Int нужен чтобы отбросить дробную часть полученого
    ;значения для "сглаживания" погрешности
    If Int(EntityYaw(ТелоИгрока) - EntityYaw(ПивотКамеры)) = 0 Then
        СкоростьНаправления = 1
    EndIf

    ;Направляем тело игрока по вектору Игрок-Камера, т.е. по направлению
    ;камеры, с заданной скоростью
    ;Но т.к. камера находится сзади, то вектор вычисляем не от игрока к
    ;камере, а наоборот от камеры к игроку
    AlignToVector(ТелоИгрока, ТелоИгрокаX - EntityX(Камера, 1), 0, ТелоИгрокаZ - EntityZ(Камера, 1), 3, СкоростьНаправления)

Else 
    ;Если игрок не перемещается - ставим небольшую скорость
    ;направления, чтобы в начале перемещения игрок направлялся плавно
    СкоростьНаправления = 0.1
EndIf
Вот собственно и все, надеюсь поймешь
Смотри аттач с исходником, но там комментариев нет.

ЗЫ
А чего у вас со смайликами?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обзор мышью на Xors3D ABTOMAT Полезные функции 4 15.01.2009 17:44
FoV камеры HolyDel 3D-программирование 1 01.08.2008 15:56
Баг камеры Wins Vega 3D-программирование 1 08.05.2007 04:14
Обзор сообщений axel186 2D-программирование 7 06.04.2007 01:26
КАМЕРЫ Akima 3D-программирование 6 09.12.2005 20:45


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com