forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Помогите c движением (http://forum.boolean.name/showthread.php?t=2993)

Sqrt 20.03.2007 15:59

Помогите c движением
 
Подскажите как сделать так, что бы при щелчке мышки объект двигался. Заранее спасибо

johnk 20.03.2007 16:02

Re: Помогите c движением
 
Может так?
Код:

if mousehit(1) moveentity obj,0,0,1

Diplomat 20.03.2007 16:04

Re: Помогите c движением
 
Нет, он же просил "при щелчке", а не "по нажатию. Потому лучше так:
[blitz]IF MouseHit(1) THEN MoveEntity obj,0,0,1[/blitz]

2 Sqrt : Не позорься. Иди учись в форумный ФАК, Блицевский Хелп и Семплы. Или заюзай форумный Поиск.

johnk 20.03.2007 16:11

Re: Помогите c движением
 
Цитата:

Нет, он же просил "при щелчке", а не "по нажатию. Потому лучше так:
А мне всегда казалось, что нажатие это MouseDown

Sqrt 20.03.2007 16:13

Re: Помогите c движением
 
Оно в принципе так, но нужно чтоб модель плавна передвигалась, и ещё чтоб в полноэкранном режиме отоброжался курсор

johnk 20.03.2007 16:42

Re: Помогите c движением
 
Цитата:

нужно чтоб модель плавна передвигалась
Может надо значения передвижения по оси OZ сделать, например 0,05?
Цитата:

ещё чтоб в полноэкранном режиме отоброжался курсор
Тут проще. Загружаешь картинку курсора, и рисуешь в координатах курсора.

HolyDel 20.03.2007 16:52

Re: Помогите c движением
 
надо по щелчку задать "пункт назначения" 3 ;)
в цикле плавно двигать нужный объект в пункт назначения.
вот например
Код:

if mousehit(1) then px=?:pz=?
positionentity obj,entityx(obj)*0.9+px*0.1,бла-бла-бла


Sqrt 20.03.2007 18:41

что-то на счёт курсора непонятно, можно поподробней написать или приложить код

написал как вы мне сказали всё равно он двигается отрывками

johnk 20.03.2007 19:00

Re: Помогите c движением
 
Насчет курсора, создаешь картинку курсора. Далее помещаешь в папку с .bb файлом, и в коде прописываешь CursorImage=Loadimage("Cursor.хз").А в цикле пишешь
DrawImage CursorImage,Mousex(),MouseY().
Все вроде..

HolyDel 20.03.2007 19:08

Re: Помогите c движением
 
вот здесь:
positionentity obj,entityx(obj)*0.9+px*0.1,бла-бла-бла
два числа в сумме дающие 1.
чем первое число больше, тем больше плавность.

Sqrt 20.03.2007 19:11

Re: Помогите c движением
 
а что писать вместо Mousex(),MouseY()

johnk 20.03.2007 19:13

Re: Помогите c движением
 
Это и писать. Mousex() и MouseY() - команды, возвращающие положение мышки

Sqrt 20.03.2007 19:27

написал он мне выдает ошибку

работает, только что-то курсор не отображается

Nord 20.03.2007 20:14

Re: Помогите c движением
 
Возможно Flip пропустил? И отрисовку в главном цикле делай.

Код:

CursorImage=LoadImage("cursor.bmp")

While Not KeyDown(1) ;Главный цикл
  DrawImage CursorImage,MouseX(),MouseY()
  Flip
  UpdateWorld
  RenderWorld
Wend


johnk 21.03.2007 03:26

Re: Помогите c движением
 
Ах да, Если у тебя будут еще спрайты рисоватся, то опускай отрисовку курсора в самый низ.

Sqrt 21.03.2007 11:35

Re: Помогите c движением
 
Спасибо, а уменьшить его можно??? и как сделать так, что при клики мышки, объект переходил в те координаты??

johnk 21.03.2007 12:15

Re: Помогите c движением
 
Цитата:

а уменьшить его можно
Естественно, командой ScaleEntity.
Цитата:

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

Sqrt 21.03.2007 12:30

Re: Помогите c движением
 
поправьте код:
Graphics3D 1024,768,32
elf_kor=LoadMesh ("models\2.3ds")
RotateEntity elf_kor,0,0,0
cur=LoadImage("sprites\Curs.png")
;ScaleEntity cur,1,1,1
ScaleEntity elf_kor,0.04,0.04,0.04
PositionEntity elf_kor,0,0,0
camera=CreateCamera()
PositionEntity camera,100,250,0
RotateEntity camera,60,90,0
l=CreateLight()
RotateEntity l,0,45,0
zv=LoadSprite ("sprites\star.jpg")
ScaleSprite zv,3,3
For x=1 To 3000
zv1=CopyEntity (zv)
PositionEntity zv1,Rnd(-1200,1200),Rnd(-120,0),Rnd(-2400,2400)
Next
Repeat
If MouseDown(1) Then
MoveEntity elf_kor,MouseX(),MouseY(),MouseZ()

MoveEntity camera,0,0,0
End If
If KeyDown(203)=1 Then MoveEntity camera,-1,0,0
If KeyDown(205)=1 Then MoveEntity camera,1,0,0
If KeyDown(200)=1 Then MoveEntity camera,0,0,+1
If KeyDown(208)=1 Then MoveEntity camera,0,0,-1
If KeyDown(1) Then Exit
DrawImage cur,MouseX(),MouseY(),MouseZ()
Flip
RenderWorld
UpdateWorld
Forever
когда клацаю корабль исчезает

HolyDel 21.03.2007 14:12

Re: Помогите c движением
 
If MouseDown(1) Then
MoveEntity elf_kor,MouseX(),MouseY(),MouseZ() <- ета строчка преемещает корабль эльфов на mousex() едениц вправо на mouseY() едениц вверх и на Mousez() едениц вперед.
попробуй MouseXSpeed() и MouseYSpeed()/
MoveEntity camera,0,0,0 <- ета строчка ничо ни делает (точнее она перемещает объхект на 0 едениц вправо, на 0 едениц вверх, и на 0 едениц веперед, все равно что f=f+0 или f+=0
End If

ЗЫ.
пусть будет так: DrawImage cur,MouseX(),MouseY(),0

Sqrt 21.03.2007 14:18

Re: Помогите c движением
 
ничего не получается

HolyDel 21.03.2007 15:06

Re: Помогите c движением
 
это была попытка объяснить почему не получается. Неудачная похоже попытка. Тебе что вообще надо?

johnk 21.03.2007 15:24

Re: Помогите c движением
 
Sqrt! Может хватит намеками говорить? Я тебе сколько раз говорил: Мы тут не телепаты (с). Может пора уже запомнить? Что это еще за беспредел? Представь, если я буду спрашивать: Я знаю, как можно сделать...а хотя нет, не знаю...Но может вы знаете?

Прости за грубость, но лучше тогда не задавать вопрос, чем говорить намеками.

Sqrt 21.03.2007 16:34

Re: Помогите c движением
 
я же сказал что мне надо при клики мышки объект перемещался туда где кликнули. Например как в "Космических рейнджеров". код который я использую предоставлен выше.

Raiter 21.03.2007 17:19

Re: Помогите c движением
 
ну так подумай и попытайся сделать уже что-то сам! за тебя всё не напишут! рано или поздно это всем надоест! а если у тебя не получается самому реализовать даже самы примитивные вещи, так может стоит задуматся "а нужно ли мне это?"... может стоит попробовать себя в других отрослях геймдева? моделинг например ;)

Sqrt 21.03.2007 17:25

Re: Помогите c движением
 
уже всё перепробывал.
Raiter: а если ты такой умный, так возьми и покажи, а не критиковать

Raiter 21.03.2007 17:28

Re: Помогите c движением
 
* райтер подумал чего бы написать... пару раз открыл было рот... пару раз даже пытался начать писать... потом посмотрел на все вопросы Sqrt и подумал что лучшим ответом будет многозначное молчание :-)

johnk 21.03.2007 17:32

Re: Помогите c движением
 
Sqrt, Raiter отчасти прав, ведь надо стараться все делать самому, а вот если голову ломал три дня и не понял, как сделать, вот тогда то и надо спрашивать. Даже Diplomat про это говорил, только в лучшем свете. Так что попробуй понять хотя бы теоретически, прикинь на бумажке, в общем попробуй...ежели будет тяжело, то знай:"В любом деле, главное начать."(с) impersonalis



PS
Я понимаю, что не в праве кого то учить. Но прими этот весьма важный совет. Я сам новичок, но перед тем как спросить, я пытаюсь это сделать сам. Хочу тебе сказать: Тебе будет ГОРАЗДО приятней, если ты в одиночку достигнешь ту цель, к которой стремишься.
PPS По крайней мере, вопрос типа что такое MouseX() и MouseY() - неуважение ко многим пользователям boolean.name. Ведь это написано в Хэлпе, понимаю, если речь идет о Handle или Object. Но и то, товарищ impersonalis постарался, что бы новички не вникали в команды путем прочтения английского текста, а представил на русском, но только жаль, что его труд, видимо пропадает... Так что, уважай труд других. Прочти Хэлп (на boolean.name имеется почти полностью переведенный!), посмотри раздел FAQ (кстати там есть замечательный туториал по созданию FPS (кстати, автор - impersonalis)) так же посмотри раздел переводы и наконец, посмотри журнал Матвея Меркулова - Blitz Et Cetera...

Raiter 21.03.2007 17:40

Re: Помогите c движением
 
* райтер таки поянл что нужно сказать

А ты посмотри по форуму... Сколько найдёш моих вопросов относительно программирования? А почему так? Может потому что я не программирую нифига? А может потому что я пытаюсь понять, сделать, реализовать по максимуму всё сам??? Может потому что если я что-то не знаю я смотрю оч хорошу вещь в блице которая именуется "Справка" ? Может потому что я хочу дойти ко всему (или почти ко всему) сам? Форум как бы тебе сказать... Это последние средство, а не первое! Сначала попробуй сделать сам, почитай справку, туторы, уроки, темы которые не раз поднимались на форуме и где всё давно разжовано! Яндекс,Гугл и такая вещь каг Мосх тебе в помощь! Если после всего этого у тя ничего не выходит, вот тогда можно и на форум запостить!

А вообще имхо более правильные вопросы это не типа "а напифите мине код! мине нада ыхра!", а вопросы по самому принцыпу, алгоритму реализации того или иного! И то сначала нужно подумать как бы ты это реализовал... Потом постишь себе на форуме: "Думаю на алгоритмом бла-бла-бла. Я думал сделать это так бла-бла-бла... Но может есть другой, лучший путь? Посоветуйте..." Ему отвечают: "можно реализовать и твой алгоритм, но если его немного изменить, он будет более продуктивный и менее ресурсопотребляемый... Попробуй делать не так, а вот так...".. Чел получает нужную инфу - теорию и идёт заниматся её реализацие на практике... Но это только моё имхо... и скорее это утопия :)

Цитата:

а если ты такой умный, так возьми и покажи, а не критиковать
нифига я не "умный" (в плане программинга конечно :-))... я помесь нуба и ламера :) и таким себя и считаю... и пока до программиста мне "як до Києва рачки" :) вот так вот :)

HolyDel 21.03.2007 18:58

Re: Помогите c движением
 
Хватит наезжать на новичка.
Корень квадратный, надо создать плэйн, сделать его полигонепикабле
EntityPickMode plane,2
планка должна быть на уровне корабля.
По щелчку мыша делаеш
if mousehit(1)
camerapcik(cam,mousex(),mousey())
tx=pickedx()
tz=pickedz()
endif

далее ишеш мой пост и вставляеш код оттуда. стоп!! не вставляеш а переписываеш.


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

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