Я ищу самый простой способ реализовать это. Я пытаюсь реализовать платформы (с полным обнаружением конфликтов), которые вы можете нарисовать с помощью мыши. Прямо сейчас у меня есть функция рисования линии, которая на самом деле рисует маленькие круги, но они настолько близки друг к другу, что они более или менее похожи на линию. Было бы лучшим решением создать небольшие pygame.Rect объекты в каждом круге? Это будет много прямых объектов. Это не образ, поэтому идеальный пиксель не кажется вариантом?PyGame Platformer с интерактивными платформами «Drawn» В
def drawGradientLine(screen, index, start, end, width, color_mode):
#color values change based on index
cvar1 = max(0, min(255, 9 * index-256))
cvar2 = max(0, min(255, 9 * index))
#green(0,255,0), blue(0,0,255), red(255,0,0), yellow(255,255,0)
if color_mode == 'green':
color = (cvar1, cvar2, cvar1)
elif color_mode == 'blue':
color = (cvar1, cvar1, cvar2)
elif color_mode == 'red':
color = (cvar2, cvar1, cvar1)
elif color_mode == 'yellow':
color = (cvar2, cvar2, cvar1)
dx = end[0] - start[0]
dy = end[1] - start[1]
dist = max(abs(dx), abs(dy))
for i in xrange(dist):
x = int(start[0]+float(i)/dist*dx)
y = int(start[1]+float(i)/dist*dy)
pygame.draw.circle(screen, color, (x, y), width)
Это моя функция рисования. И вот моя петля, которую я поставил в своем основном цикле игровых событий.
i = 0
while (i < len(pointList)-1):
drawGradientLine(screen, i, pointList[i], pointList[i + 1], r, mode)
i += 1
Спасибо за любую помощь, обнаружение столкновений дает мне огромную головную боль прямо сейчас (до сих пор не может получить это право для моей плитки либо ..).
Спасибо, я не думаю об использовании масок/не думаю, что было бы работать. Одна вещь, которая меня путает, - так, учитывая, что я обнаружил столкновение, то что? Как я могу сделать так, чтобы мой «игрок» мог фактически пересекать эту область? Должен ли я добавлять маскированные случаи к обнаружению конфликтов? Не могли бы вы представить краткие примеры этого? – user3064211
Извините за все вопросы, и еще раз спасибо. – user3064211
Значит, вы не знаете, что делать после обнаружения столкновения? Это зависит от контекста. Во-первых, вы, вероятно, захотите, чтобы игрок не проходил через нарисованную платформу, а это означает, что если обнаружено столкновение, вам нужно слегка переместить игрока, чтобы он больше не высунул «внутри» платформы. Это позволило бы вам «приземлиться» на платформе, а также не дать вам прыгать через нее. Если вы хотите пройтись по неровной платформе без необходимости прыгать, это более сложная проблема. – Haz