![](images/chestnut/misc/left.gif) |
FAQ Туториалы и часто задаваемые вопросы |
30.06.2015, 01:28
|
#1
|
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
|
Чудо-кот
Регистрация: 22.02.2011
Сообщений: 901
Написано 480 полезных сообщений (для 1,471 пользователей)
|
Ответ: Помогите нубу!
Сообщение от Mr_Maikl
Но я себе уже всю голову сломал, и не могу понять причины странного поведения переменных PozCyrX и PozCyrY.
Мне просто хочется понять причину, по которой переменные отказываются принимать значение меньшее объявленному в начале.
|
Может просто мышка доходит до края экрана?
Хз, код не особо читабельный.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
30.06.2015, 08:58
|
#3
|
Элита
Регистрация: 21.01.2010
Адрес: Россия, Рязанская область, г.Михайлов
Сообщений: 2,067
Написано 1,185 полезных сообщений (для 2,828 пользователей)
|
Ответ: Помогите нубу!
Попробуй добавить в основной цикл
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
Этот код будет ставить курсор мышки в центр экрана, что бы он никуда не убежал и не упирался в края. Это позволил крутить её как хочешь
И ещё попробуй PozCyrX и PozCyrY объявить как дробные, то есть Возможно ещё в этом беда зарыта
Посмотрел код, запустил, беда не в этом явно.
__________________
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)
|
|
Сообщение было полезно следующим пользователям:
|
|
30.06.2015, 10:55
|
#4
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Помогите нубу!
Зашёл в топик, хотел помочь.
Код не оформлен как код — его трудно читать.
В коде используется goto — ещё труднее его читать.
Чтобы выяснить в чём дело, надо запустить программу и посмотреть, что там творится.
В коде используется подгрузка каких-то файлов: моделей и текстур, очевидно, без них не заработает. Можно было бы все причендалы сложить в zip-архив и приложить к посту, чтобы желающие могли тут же запустить. Но нет, им придётся найти у себя что-то подобное, надо искать, надо складывать в папку.
Расхотел помочь. Думаю, не я один по причинам выше.
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Эти 3 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
|
|
30.06.2015, 15:31
|
#5
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,021
Написано 2,312 полезных сообщений (для 5,349 пользователей)
|
Ответ: Помогите нубу!
Сообщение от St_AnGer
Попробуй добавить в основной цикл
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
|
Это не поможет т. к. после этого камера не двигается, или идёт очень редкими рывками (один раз даже повернулась чуть-чуть).
Код надо переделывать.
Ты хочешь сделать движение камеры (объяснения для остальных), вид сверху (изометрия), с возможностью вращать камеру по трём осям, вокруг "курсора", который ползает внизу по плоскости.
Учитывая что это не работает после установки курсора в центр экрана, у тебя присутствует привязка (или типа того) к координатам курсора. Но это неправильно. Нужно получать куда двигается мышь (курсор) и в ту сторону двигать камеру.
Пригодятся команды:
ProjectedX()
ProjectedY()
ProjectedZ()
Goto в главном цикле дурной тон.
P. S. Код не читал.
|
(Offline)
|
|
30.06.2015, 19:58
|
#6
|
AnyKey`щик
Регистрация: 30.06.2015
Сообщений: 3
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Помогите нубу!
Сообщение от Nerd
Может просто мышка доходит до края экрана?
Хз, код не особо читабельный.
|
Да! Это оно самое! Я просто не допёр, по тому, что команда возвращает не координаты а смещение. Был уверен, что тут просто краёв не бывает... теперь всё работает как положено.
Сообщение от St_AnGer
Этот код будет ставить курсор мышки в центр экрана, что бы он никуда не убежал и не упирался в края. Это позволил крутить её как хочешь
И ещё попробуй PozCyrX и PozCyrY объявить как дробные, то есть Возможно ещё в этом беда зарыта
Посмотрел код, запустил, беда не в этом явно.
|
Эти переменные изначально и были дробные) Просто это следы танцев с бубном вокруг них...
Сообщение от ABTOMAT
Зашёл в топик, хотел помочь.
Код не оформлен как код — его трудно читать.
В коде используется goto — ещё труднее его читать.
Чтобы выяснить в чём дело, надо запустить программу и посмотреть, что там творится.
В коде используется подгрузка каких-то файлов: моделей и текстур, очевидно, без них не заработает. Можно было бы все причендалы сложить в zip-архив и приложить к посту, чтобы желающие могли тут же запустить. Но нет, им придётся найти у себя что-то подобное, надо искать, надо складывать в папку.
Расхотел помочь. Думаю, не я один по причинам выше.
|
Код не выделил. Мой косяк. Прошу прощения. Goto - для меня удобная команда. Я просто не знаю что в ней плохое. Просто я не знаю другой команды безусловного перехода... Подгрузка модели, там вообще любая модель сойдёт. Она у меня не анимирована. И текстура взята первая попавшаяся. Я просто не подумал, что кому-то они понадобятся. Могу выложить. В любом случае спасибо за ответ, и прошу извинения за потраченное время.
Сообщение от Arton
Это не поможет т. к. после этого камера не двигается, или идёт очень редкими рывками (один раз даже повернулась чуть-чуть).
Код надо переделывать.
Пригодятся команды:
ProjectedX()
ProjectedY()
ProjectedZ()
Goto в главном цикле дурной тон.
P. S. Код не читал.
|
Тут просто зависит в какое место кода вставлена строка. У меня всё попёрло на ура. На счёт пререписи кода, не судите строго. Это даже не программа, а попытка разобраться в языке.За Команды - спасибо, буду изучать.Goto - Я просто не в курсе почему оно дурной тон. Я как по другому перейти не знаю(((.
Всем огромное спасибо за помощ! Проблема решена, и мой мозг теперь в безопасности).
|
(Offline)
|
|
30.06.2015, 23:02
|
#7
|
Быдлокодер
Регистрация: 05.07.2009
Адрес: Проспит
Сообщений: 5,021
Написано 2,312 полезных сообщений (для 5,349 пользователей)
|
Ответ: Помогите нубу!
Сообщение от Mr_Maikl
Goto - Я просто не в курсе почему оно дурной тон.
|
По этому и дурной тон. В будущем подобный скачок может запутать, когда код разрастётся.
Я как по другому перейти не знаю(((.
|
If
Вместо прыжка, логичнее будет ставить условие перехода.
И ещё, называй пожалуйста темы правильно, что бы название отражало суть.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:16.
|