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

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

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

FAQ Туториалы и часто задаваемые вопросы

Ответ
 
Опции темы
Старый 30.06.2015, 01:28   #1
Mr_Maikl
AnyKey`щик
 
Регистрация: 30.06.2015
Сообщений: 3
Написано 0 полезных сообщений
(для 0 пользователей)
Помогите нубу!

Люди! Я занялся изучением Blitz'а совсем недавно, и заранее прошу меня извинить за, вероятно, глупый вопрос. Но я себе уже всю голову сломал, и не могу понять причины странного поведения переменных PozCyrX и PozCyrY.
Мне просто хочется понять причину, по которой переменные отказываются принимать значение меньшее объявленному в начале. И вообще странно себя ведут.... Помогите, а то сойду с ума....





Graphics3D 1920,1080,32,1
SetBuffer BackBuffer ()


Laits1=CreateLight()
kyrsor=LoadMesh("D:\Prog\Kyrsor4.b3d")
TextureGround=LoadTexture ("D:\Prog\Texture1.jpg")

PointRotate=CreatePivot()


MainCam=CreateCamera(PointRotate)


PozCyrX=0
PozCyrY=200


Color 0,200,0

VertCam#=160
SizeCyr#=1

RadCamX#=0
RadCamY#=0



PositionEntity Laits1,0,60,-70
PositionEntity MainCam,0,VertCam#,-160
RotateEntity MainCam,45,RadCamX#,0
MoveMarker=CreatePivot(Kyrsor)


ScaleTexture TextureGround,32,32


terrain=CreateTerrain( 32 )


ScaleEntity terrain,10,1,10



EntityTexture terrain,TextureGround



Repeat

PositionEntity PointRotate,PozCyrX,1,PozCyrY
PositionEntity MoveMarker,0,0,0
PositionEntity kyrsor,PozCyrX,1,PozCyrY

aX=MouseXSpeed()
aY=MouseYSpeed()

VertCam#=VertCam#+(MouseZSpeed()*3)


If MouseDown(2)=1 Then RadCamX#=RadCamX#-aX RadCamY#=RadCamY#+aY RotateEntity PointRotate ,RadCamY#,RadCamX#,0 RotateEntity Kyrsor ,0,RadCamX#,0 Goto lab1


MoveEntity MoveMarker,aX,0,aY-(aY*2)



PozCyrX=EntityX (MoveMarker,1)
PozCyrY=EntityZ (MoveMarker,1)




.lab1

ScaleEntity kyrsor,SizeCyr,SizeCyr,SizeCyr

SizeCyr#=SizeCyr#-0.01
If SizeCyr#<0.4 Then SizeCyr#=1


PositionEntity MainCam,0,VertCam#,-160


RenderWorld
UpdateWorld

Flip

Until KeyHit(1)

End
(Offline)
 
Ответить с цитированием
Старый 30.06.2015, 02:27   #2
Nerd
Чудо-кот
 
Аватар для Nerd
 
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений
(для 1,471 пользователей)
Ответ: Помогите нубу!

Сообщение от Mr_Maikl Посмотреть сообщение
Но я себе уже всю голову сломал, и не могу понять причины странного поведения переменных PozCyrX и PozCyrY.
Мне просто хочется понять причину, по которой переменные отказываются принимать значение меньшее объявленному в начале.
Может просто мышка доходит до края экрана?
Хз, код не особо читабельный.
__________________

(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_Maikl (30.06.2015)
Старый 30.06.2015, 08:58   #3
St_AnGer
Элита
 
Аватар для St_AnGer
 
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений
(для 2,828 пользователей)
Ответ: Помогите нубу!

Попробуй добавить в основной цикл
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
Этот код будет ставить курсор мышки в центр экрана, что бы он никуда не убежал и не упирался в края. Это позволил крутить её как хочешь
И ещё попробуй PozCyrX и PozCyrY объявить как дробные, то есть
PozCyrX#=0
PozCyrY#=200
Возможно ещё в этом беда зарыта

Посмотрел код, запустил, беда не в этом явно.
__________________
Main PC:
Intel Core i5 4260U 1.44 GHz + LPDDR3 1x4096 1600 MHz + Intel HD Graphics 5000.

Asus Ёжик T101-MT:
Intel Atom N-570 1.66 Ghz + DDR2 2x1024 800 Mhz + Intel GMA 3150 128 Mb DDR2


Скачать Doom 2D: Remake v0.3.8a

Последний раз редактировалось St_AnGer, 30.06.2015 в 10:07.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_Maikl (30.06.2015)
Старый 30.06.2015, 10:55   #4
ABTOMAT
Ференька
 
Аватар для ABTOMAT
 
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений
(для 15,675 пользователей)
Ответ: Помогите нубу!

Зашёл в топик, хотел помочь.

Код не оформлен как код — его трудно читать.
В коде используется goto — ещё труднее его читать.

Чтобы выяснить в чём дело, надо запустить программу и посмотреть, что там творится.

В коде используется подгрузка каких-то файлов: моделей и текстур, очевидно, без них не заработает. Можно было бы все причендалы сложить в zip-архив и приложить к посту, чтобы желающие могли тут же запустить. Но нет, им придётся найти у себя что-то подобное, надо искать, надо складывать в папку.

Расхотел помочь. Думаю, не я один по причинам выше.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**

* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена

(Offline)
 
Ответить с цитированием
Эти 3 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
Артем Валерьевич (30.06.2015), Arton (30.06.2015), Gector (01.07.2015)
Старый 30.06.2015, 15:31   #5
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Помогите нубу!

Сообщение от St_AnGer Посмотреть сообщение
Попробуй добавить в основной цикл
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
Это не поможет т. к. после этого камера не двигается, или идёт очень редкими рывками (один раз даже повернулась чуть-чуть).
Код надо переделывать.

Ты хочешь сделать движение камеры (объяснения для остальных), вид сверху (изометрия), с возможностью вращать камеру по трём осям, вокруг "курсора", который ползает внизу по плоскости.

Учитывая что это не работает после установки курсора в центр экрана, у тебя присутствует привязка (или типа того) к координатам курсора. Но это неправильно. Нужно получать куда двигается мышь (курсор) и в ту сторону двигать камеру.

Пригодятся команды:
ProjectedX()
ProjectedY()
ProjectedZ()
Goto в главном цикле дурной тон.

P. S. Код не читал.
(Offline)
 
Ответить с цитированием
Старый 30.06.2015, 19:58   #6
Mr_Maikl
AnyKey`щик
 
Регистрация: 30.06.2015
Сообщений: 3
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Помогите нубу!

Сообщение от Nerd Посмотреть сообщение
Может просто мышка доходит до края экрана?
Хз, код не особо читабельный.
Да! Это оно самое! Я просто не допёр, по тому, что команда возвращает не координаты а смещение. Был уверен, что тут просто краёв не бывает... теперь всё работает как положено.

Сообщение от St_AnGer Посмотреть сообщение
Этот код будет ставить курсор мышки в центр экрана, что бы он никуда не убежал и не упирался в края. Это позволил крутить её как хочешь
И ещё попробуй PozCyrX и PozCyrY объявить как дробные, то есть
PozCyrX#=0
PozCyrY#=200
Возможно ещё в этом беда зарыта

Посмотрел код, запустил, беда не в этом явно.
Эти переменные изначально и были дробные) Просто это следы танцев с бубном вокруг них...

Сообщение от ABTOMAT Посмотреть сообщение
Зашёл в топик, хотел помочь.

Код не оформлен как код — его трудно читать.
В коде используется goto — ещё труднее его читать.

Чтобы выяснить в чём дело, надо запустить программу и посмотреть, что там творится.

В коде используется подгрузка каких-то файлов: моделей и текстур, очевидно, без них не заработает. Можно было бы все причендалы сложить в zip-архив и приложить к посту, чтобы желающие могли тут же запустить. Но нет, им придётся найти у себя что-то подобное, надо искать, надо складывать в папку.

Расхотел помочь. Думаю, не я один по причинам выше.
Код не выделил. Мой косяк. Прошу прощения. Goto - для меня удобная команда. Я просто не знаю что в ней плохое. Просто я не знаю другой команды безусловного перехода... Подгрузка модели, там вообще любая модель сойдёт. Она у меня не анимирована. И текстура взята первая попавшаяся. Я просто не подумал, что кому-то они понадобятся. Могу выложить. В любом случае спасибо за ответ, и прошу извинения за потраченное время.

Сообщение от Arton Посмотреть сообщение
Это не поможет т. к. после этого камера не двигается, или идёт очень редкими рывками (один раз даже повернулась чуть-чуть).
Код надо переделывать.


Пригодятся команды:
ProjectedX()
ProjectedY()
ProjectedZ()
Goto в главном цикле дурной тон.

P. S. Код не читал.
Тут просто зависит в какое место кода вставлена строка. У меня всё попёрло на ура. На счёт пререписи кода, не судите строго. Это даже не программа, а попытка разобраться в языке.За Команды - спасибо, буду изучать.Goto - Я просто не в курсе почему оно дурной тон. Я как по другому перейти не знаю(((.

Всем огромное спасибо за помощ! Проблема решена, и мой мозг теперь в безопасности).
(Offline)
 
Ответить с цитированием
Старый 30.06.2015, 23:02   #7
Arton
Быдлокодер
 
Аватар для Arton
 
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,019
Написано 2,312 полезных сообщений
(для 5,349 пользователей)
Ответ: Помогите нубу!

Сообщение от Mr_Maikl Посмотреть сообщение
Goto - Я просто не в курсе почему оно дурной тон.
По этому и дурной тон. В будущем подобный скачок может запутать, когда код разрастётся.

Я как по другому перейти не знаю(((.
If

Вместо прыжка, логичнее будет ставить условие перехода.

И ещё, называй пожалуйста темы правильно, что бы название отражало суть.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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


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


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