Как использовать шейдеры, чтобы сделать части объекта прозрачными на основе контакта с другим объектом? - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь создать игру в GameMaker 2, в которой объекты становятся прозрачными в зависимости от объекта позади них. В настоящее время у меня это есть, поэтому я просто проверяю каждый шаг (в пределах объекта, чтобы стать прозрачным), находится ли в контакте с фоновым объектом, а затем устанавливаю альфа на 0,5, если истина.

Вот что я имею в виду, объект изменяется с:

Непрозрачный К Полу альфа

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

Я пытался добиться этого с помощью шейдеров, но не Имея большой опыт работы с ними, я попытался добиться эффекта, создав шейдер, в котором я прошел в центре желтого поля, его ширины и высоты, чтобы проверить, был ли какой-либо пиксель внутри прямоугольника, а затем установить его на прозрачный, но это В методе используется много вложенных операторов if, которые, как я понимаю, являются плохими, и не будут работать, если их больше двух Цветные секции в комнате. Есть ли способ добиться эффекта, которого я хочу (когда только части шара внутри желтой части становятся прозрачными), приходится ли мне с этим справляться, просто перепрыгивая с полностью непрозрачного на полностью прозрачный.

...