Показать сообщение отдельно
Старый 23.10.2021, 14:58   #1
Tiranas
Разработчик
 
Аватар для Tiranas
 
Регистрация: 11.10.2017
Сообщений: 390
Написано 74 полезных сообщений
(для 117 пользователей)
Как избавиться от наследования albedo_color?

Как избавиться от наследования albedo_color после дублирования объекта?

Копирую объект (ключ), первый должен быть жёлтого цвета, второй красного, но оба создаются красными. Флаги при создании дубликатов выставил в минимум. Но цвет у первого продублированного ключа меняется с жёлтого на красный.

# Установить цвет ключа
func SetColorKey01(key01: Node, NumColor: int):
	var col
	match NumColor:
		1: col = Color(1, 1, 0)
		2: col = Color(1, 0, 0)
		3: col = Color(0, 1, 0)
		4: col = Color(0, 0, 1)
		5: col = Color(0, 1, 1)
		6: col = Color(1, 0, 1)
		7: col = Color(1, 1, 1)
		_: col = Color(0.7, 0.7, 0.7)
	key01.get_child(2).get_child(0).material.albedo_color = col
	key01.get_child(2).get_child(1).material.albedo_color = col
	key01.get_child(2).get_child(2).material.albedo_color = col
	key01.get_child(2).get_child(3).material.albedo_color = col
	key01.get_child(2).get_child(4).material.albedo_color = col
	key01.get_child(2).get_child(5).material.albedo_color = col

# металлическая дверь
func ABoxCreate1(y: int, x: int, numBox: int) -> Node:
	var newNode = $doorBox1.duplicate(7)
	newNode.translation = Vector3(x * 4, y * 4, -2)
	newNode.visible = true
	newNode.editor_description = "A" + str(numBox)
	newNode.get_child(0).editor_description = newNode.editor_description
	newNode.get_child(0).get_child(0).editor_description = newNode.editor_description
	newNode.get_child(0).get_child(1).editor_description = newNode.editor_description
	add_child(newNode)
	var key_add_01 = $Key01.duplicate(0)
	key_add_01.translation = Vector3(x * 4, (y + 1) * 4, 2)
	key_add_01.scale = Vector3(1.3, 1.3, 1.3)
	#key_add_01.bRotate = false
	SetColorKey01(key_add_01, numBox) # Установить цвет ключа
	key_add_01.visible = true
	add_child(key_add_01)
	#newNode.add_child(key_add_01)
	#var key01 = load("res://Key01.tscn").instance()
	return newNode
# Ключ к металлической двери
func aBoxCreate1(y: int, x: int, numBox: int) -> Node:
	var newNode = $KeySphere1.duplicate(7)
	#$KeySphere1.remove_child(newNode)
	newNode.translation = Vector3(x * 4, y * 4, 0)
	newNode.visible = true
	newNode.editor_description = "a" + str(numBox)
	newNode.get_child(0).editor_description = newNode.editor_description
	newNode.get_child(1).editor_description = newNode.editor_description
	add_child(newNode)
	var key_add_01 = $Key01.duplicate(4)
	#$Key01.remove_child(key_add_01)
	#key_add_01.get_parent().remove_child(key_add_01)
	key_add_01.translation = Vector3(0,0,0)
	SetColorKey01(key_add_01, numBox) # Установить цвет ключа
	key_add_01.visible = true
	#add_child(key_add_01)
	newNode.add_child(key_add_01)
	return newNode
__________________
Человек это или баг, или заложенное специально программное яйцо.
(Offline)
 
Ответить с цитированием