1 / 1 / 0
Регистрация: 01.07.2016
Сообщений: 7
1

Столкновение Объектов в Играх

01.07.2016, 20:41. Показов 918. Ответов 2
Метки нет (Все метки)

Код определяет столкновение по х и 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. Объясните пожалуйста.
На картинке попытался нарисовать
Миниатюры
Столкновение Объектов в Играх  
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.07.2016, 20:41
Ответы с готовыми решениями:

Столкновение объектов
Здравствуйте. Столкнулся с небольшой трудностью при реализации проекта. Есть автомобиль и...

Столкновение 2D объектов
Делаю игру -арканоид, и сталкнулся с такой проблемой, когда шарик сталкивается с правой или левой...

Столкновение объектов
Стоит задача, нужно что бы сгенерированые объекты двигались в сторону сферы(которая может менять...

Столкновение объектов
Делаю игру Танчики. Возникла проблема при столкновении Танка со стенами. Сделал движение танка,...

2
24 / 24 / 10
Регистрация: 17.12.2014
Сообщений: 72
04.07.2016, 07:33 2
Вот эти статьи ответят на большинство твоих вопросов по столкновениям.
0
1 / 1 / 0
Регистрация: 01.07.2016
Сообщений: 7
14.07.2016, 00:38  [ТС] 3
Я сам все решил, но у меня получилось очень грамоздко
Столкновение с 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
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.07.2016, 00:38
Помогаю со студенческими работами здесь

Столкновение объектов
У меня есть прямоугольник, который всегда движется с верху в низ, то есть когда дошел до низу...

Столкновение объектов
Здравствуйте. Подскажите, пожалуйста, как сделать столкновение объектов. У меня на сцене...

Столкновение объектов
Добрый день. Столкнулся с следующей проблемой. Я с помощью коллекции прорисовываю звезды. При...

Про столкновение объектов
Есть две сферы (каждая имеет Sphere collider и Rigidbody). Допустим обе управляются разными...

Столкновение двух объектов
Есть снаряд и 2 вида стен При столкновении со стеной,нужно определить какой из типов(ну для...

Столкновение объектов (Тригеры, где логика?)
Здравствуйте. Моя задача заключается вот в чем. Есть FirstPersonController и модель(Ящик)....


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru