Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

C++

Войти
Регистрация
Восстановить пароль
 
Itsgonnabeme
1 / 1 / 0
Регистрация: 01.07.2016
Сообщений: 7
#1

Как убрать столкновение Объектов на плоскости с пустым пространством? - C++

01.07.2016, 22:30. Просмотров 264. Ответов 4
Метки нет (Все метки)

Код определяет столкновение по х и y.
C++
1
2
 if ((obj1.x + obj1.width >= obj2.x) && (obj1.x <= obj2.x + obj2.width)) XColl = true;
 if ((obj1.y + obj1.height >= obj2.y) && (obj1.y <= obj2.y + obj2.height)) YColl = true;
C++
1
Если (столкновение) то  Obj1.x = Obj1.x-1  // Это движение персонажа. Если (столнулся со стенкой) то назад на 1
Вопрос: У меня получается, что Obj1(персонаж) сталкивается не только с Obj2(стенка), но и с пустым пространством по X. Как от этого избавиться по Х и Y. Объясните пожалуйста.
На картинке попытался нарисовать

Пояснение: В теме gamedev уже написал. Сдесь написал потому, что думаю, в этой ветке большее количество специалистов программирования.
0
Миниатюры
Как убрать столкновение Объектов на плоскости с пустым пространством?  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.07.2016, 22:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как убрать столкновение Объектов на плоскости с пустым пространством? (C++):

Столкновение объектов - C++ Builder
Нужна помощь по столкновению. Нашол код столкновения в инете, и вставил в свой код. Столкновение работает как бы, но если два препядствия...

Столкновение объектов в играх - C++
Кто что подскажет/посоветует_почитать по поводу физики в играх, в частности столкновения объектов. (интересует само решение задач,...

Столкновение объектов. Как правильно реализовать? - C (СИ)
Здравствуйте! Пишу игру в танчики. Borland C++ 3.1. Сейчас реализовал работу с клавиатурой, ознакомиться можно здесь :...

Как проверить столкновение двух объектов? - OpenGL
Добрый вечер. Пишу 3d игру. Есть летающий по карте объект - восьмигранник неправильной формы, для которого известно его положение и...

AS 2.0 Как прописать столкновение двух объектов и последствия? - ActionScript
Нужна помощь! Мне через неделю проект сдавать а я никак не могу разобраться. А суть такова надо в as 2 (macromedia flash 8) прописать...

Как сделать, чтобы столкновение объектов было абсолютно неупругим - XNA
Нашел пример попиксельного столкновения. Работает прекрасно, но что делать в момент столкновения, если нужно, чтоб оно было абсолютно...

4
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,609
02.07.2016, 08:30 #2
Itsgonnabeme, что такое пустое пространство? Границы поля? Ну так не засчитывайте за столкновение этот случай. Как он вообще у вас в столкновениях оказался? По идее игрока просто должно не пускать дальш. Ну разве что у вас стены ядовитые)
0
Itsgonnabeme
1 / 1 / 0
Регистрация: 01.07.2016
Сообщений: 7
02.07.2016, 17:40  [ТС] #3
что такое пустое пространство? Границы поля? Ну так не засчитывайте за столкновение этот случай. Как он вообще у вас в столкновениях оказался? По идее игрока просто должно не пускать дальш. Ну разве что у вас стены ядовитые)
В том и дело что по X по все повехности не пускает. а должно пускать. Когда игрок в игре встречает предмет выше себя он прыгает на него. а у меня не пускает от земли до самого конца окна.
0
vxg
Модератор
3172 / 1975 / 222
Регистрация: 13.01.2012
Сообщений: 7,609
03.07.2016, 07:31 #4
Itsgonnabeme, не особо понятное объяснение. Если надо прыгать вверх сквозь площадку которая не пускает вниз анализируйте направление движения
0
Itsgonnabeme
1 / 1 / 0
Регистрация: 01.07.2016
Сообщений: 7
14.07.2016, 00:33  [ТС] #5
Я сам все решил, но у меня получилось очень грамоздко
Столкновение с 4 сторонами left,top,right bottom
QBasic/QuickBASIC
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
FOR i=ps\y-ImageWidth(obj2) TO ps\y+ImageHeight(obj2) STEP 1
        IF (i=pd\y) AND (ps\x=(pd\x+ImageWidth(obj2)))  THEN
                Text 300, 400, "CollideX"
                collx=1
                Delay 10
        EndIf
    
NEXT
 
FOR j=ps\x-ImageWidth(obj2) TO ps\x+ImageWidth(obj2) STEP 1  
        IF (j=pd\x) AND (ps\y=(pd\y+ImageWidth(obj2))) THEN
            Text 250, 400, "CollideY"
            colly=1
            Delay 10
    EndIf
    
NEXT
 
FOR i=ps\y-ImageHeight(obj2) TO ps\y+ImageHeight(obj1) STEP 1
        IF (i=pd\y) AND (ps\x+ImageWidth(obj2)=pd\x)  THEN
          Text 350, 400, "CollideX1"
          collx2=1
          Delay 10
   EndIf
NEXT
 
FOR j=ps\x-ImageWidth(obj2) TO ps\x+ImageWidth(obj2) STEP 1  
        IF (j=pd\x) AND ((ps\y+ImageWidth(obj2))=(pd\y)) THEN
            Text 260, 400, "CollideY1"
            colly2=1
            Delay 10
        EndIf
    
NEXT
 
 
IF(collx=1) THEN 
pd\x=pd\x-1
collx=0
EndIf
 
IF(colly=1) THEN 
pd\y=pd\y-1
colly=0
EndIf
 
 
IF(collx2=1) THEN 
pd\x=pd\x+1
collx2=0
EndIf
 
IF(colly2=1) THEN 
pd\y=pd\y+1
colly2=0
EndIf
1
14.07.2016, 00:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2016, 00:33
Привет! Вот еще темы с ответами:

Является ли линейным пространством множество векторов плоскости? - Алгебра
Является ли линейным пространством множество всех векторов плоскости за исключением векторов, параллельных данной прямой?

столкновение 2 объектов - Unity, Unity3D
Есть снаряд и 2 вида стен При столкновении со стеной,нужно определить какой из типов(ну для примера деревянная или металлическая) Как...

Столкновение объектов - JavaScript
Есть проблемка, запутался ,помогите,пожалуйста.Не реагирует на столкновение,заранее большое спасибо &lt;html&gt; &lt;head&gt; &lt;script...

Столкновение объектов - ActionScript
Здравствуйте. Я раньше немного программировала на as2, и сейчас решила освоить as3, пока еще он мне тяжело дается. Делаю простенькую...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru