😸

[Godot] runtimeでStandardMaterial3Dのalbedo_colorを変更する

2024/02/26に公開

Tweenのチュートリルでよく2DスプライトのModulateを変えているのを見ますが、3Dのオブジェクトの色を変更するのはあまり見ないのでやってみました。

parent_node.gd
extends Node3D

# ParentNode
#  |- MeshInstance3D      <- has material.tres as material
#  |- Timer               <- timeout signal is connected to ParentNode
#  |- WorldEnvironment
#  |- Camera3D

# 1. 親ノードに色を変えたいMeshInstance3DとTimerを追加しておきます
# 2. あらかじめ保存しておいたマテリアルの.tresファイルを最初にロードします。
# 3. タイマーのtimeoutシグナルを使って毎秒ランダムな色に変更します。
@onready var material:Resource = preload("res://materials/material.tres")
@onready var timer = $Timer

func _ready():
	timer.start()

func _on_timer_timeout():
	var new_color = Color(randf_range(0,1),randf_range(0,1),randf_range(0,1))
	var tween = get_tree().create_tween()
	tween.tween_property(material, "albedo_color", new_color, 0.9)

Discussion