Я пытался сделать порталы, как в Portal, в Годо, но они не работают.
Я пытался выявить причину, но провалился.
вот код (крепиться к каждому порталу):
# extends
extends Spatial
class_name PortalMain
# exports
export var second_viewport: NodePath
export var second_camera: NodePath
export var teleport_light: bool = true
export var teleport_objects: bool = true
export var pickable: bool = false
export var teleportable: bool = false
# system functions
func is_pickable(): return pickable
func is_teleportable(): return teleportable
# engine functions
func _ready():
return
#
func _process(_delta):
if teleport_light:
set_current_viewport(get_opposite_image())
pass
return
#
func _physics_process(_delta):
return
#
func _input(_event):
return
#
# custom functions
func get_opposite_image():
var img = get_node(second_camera).get_viewport().get_texture().get_data()
var tex = ImageTexture.new()
tex.create_from_image(img)
return tex
#
func set_opposite_viewport(texture: ImageTexture):
get_node(second_viewport).material.albedo_texture = texture
return
#
func get_current_image():
var img = $camera.get_viewport().get_texture().get_data()
var tex = ImageTexture.new()
tex.create_from_image(img)
return tex
#
func set_current_viewport(texture: ImageTexture):
$viewport.material.albedo_texture = texture
return
устроены они так:
во входных данных меш и камера друг друга.
работает это вот так:
Единственное, что я заметил, так это то, что порталы отображают картинку из камеры игрока и дальше их рекурсит.
туториал, который я использовал
застрял на первом же пункте
Сделать эти порталы казалось такой простой задачей, а впереди ещё гора работы :(