Animated texture error not unique

Godot v4.4

when using 2 enemies on a level ( enemy01.tscn )
the animated texture frames on enemie2 will change the frames on enemie1… impossible to make the animated tuxture unique in scene.

when clicking “manadge object properties” on the editor - then “make sub-resource unique”
theres an internal error:

editor/editor_node.cpp:8070 - Condition “plugins_list.has(p_plugin)” is true.

i dont have any plugins enabled

This a Godot issue, the plug-in part is about some engine internals, not user plugins. Is a reported issue but doesn’t seems to break anything.

Any way to get around this bug ?
I have a player scene set to global, when i use 2 player on screen this doesnt happpen…

It only seems to happen with an enemy ?

Where you’re using this texture? Can your show a print of your scene organization?

Where you’re using this texture?

to change the sprite of a body part…
Before i was using all the body parts has a seperate scene then draged that scene on to the enemy, ive made the nodes inside guard01 scene to see if it would solve the bug, but it doesnt do anything… The player seems to run fine and has the same code


var animFrame = 0;
var animFrameMax = 1;
var anim_delay: float = 5;
var anim_delaySET: float = 5;
var anim_delayReset = true;
var anim_loop = true;
var nextFrame = false;
var frameStart = 0;


func _playAnim( varAnimName, delay, setLoop ):
	root1 = varAnimName;
	animFrameMax = root1.Fnum.size();
	anim_loop = setLoop;
	if ( anim_delayReset == true ):
		animFrame = 0;
		anim_delaySET = delay;
		anim_delay = delay;
		anim_delayReset = false;

func _delayGo(_delta):
	if ( anim_delay >= 0 ):
		anim_delay -= 50*_delta;
		if ( anim_delay < 0 ):
			anim_delay = anim_delaySET;
			animFrame += 1;
			nextFrame = true;
			if ( animFrame > animFrameMax-1 ):
				if ( anim_loop == true ):
					animFrame = frameStart;
				else:
					animFrame = animFrameMax-1;
		else:
			nextFrame = false;


func _ptSimplePath():
	#------------------//-----------------------//---------------------------------
	#-----------------//---UPPER-BODY-ROOT-1---//----------------------------------
	#----------------//-----------------------//-----------------------------------
	animFrame = clamp(animFrame, 0, root1.Fnum.size()-1 );
	#//-Left-Hand
	pt1_spr.texture.set_current_frame( root1.Fnum[animFrame].pt1.fm );


func _physics_process(delta: float) -> void:
	
	_ptSimplePath();
	_delayGo(delta);

Try mark them as local to scene and see if works

image

it doesnt seem to work…
Iam not sure what is happening, it worked for the torso ( 01Torso1 ) but the head ( 01Head1 ) keeps changing its frame to the same frame of the second enemy. I even try to set local to scene in all the head texture frames but it doesnt seem to work.


.
.
.

there s also another problem Animated texture now in 4.4.7 doesnt seem to work with pointLight2D.

var mzl01 = muzzle01.instantiate();
add_child(mzl01);

E 0:00:02:0780 player.gd:379 @ shoot01(): Cannot get path of node as it is not in a scene tree.
<C++ Error> Condition “!is_inside_tree()” is true. Returning: NodePath()
<C++ Source> scene/main/node.cpp:2345 @ get_path()
player.gd:379 @ shoot01()
player.gd:1942 @ _physics_process()

W 0:00:02:0780 player.gd:379 @ shoot01(): AnimatedTexture cannot be used as a PointLight2D texture (). As a workaround, assign the value returned by AnimatedTexture’s get_image() instead.
<C++ Source> scene/2d/light_2d.cpp:407 @ set_texture()
player.gd:379 @ shoot01()
player.gd:1942 @ _physics_process()

.
.
If i remove “pointLight2D” from muzzle01 and use a normal sprite the error and warning are gone

[edit]
muzzle01 script, I cant use " get_image() "

extends AnimatedSprite2D



func _ready() -> void:
	frame = 0;
	play();



#func _physics_process(_delta: float) -> void:
#	if ( frame == 5 ):
#		queue_free();
#	pass;


func _on_muzzle01_animation_finished() -> void:
	queue_free();

[ edit ]
wait i had a helmet on top of the ( enemy ) “guard01” head
i forgot to change the elmet animated texture local to scene

local to scene seems to fix problem

1 Like