### Godot version

4.0.rc1

### System information

Windows 10

### Issue description

I'm not 100% sure what's causing it, but something in the blend tree of the animation tree doesn't play the correct animations when running. 

The problem happens when you jump for a 2nd time. It plays the fall animation for 1 loop before switching to the jump animation. It should only play the jump animation when moving upwards. Same effect happens rarely with the idle playing while jumping. 

![BlendTreeBug](https://user-images.githubusercontent.com/48493009/217973489-f5e84658-7fdc-4ba8-8a59-d23ab2611236.gif)



I think it has something to do with the transition nodes and some kind of blend between the 2 animations. Even though the xfade time is set to 0 on all transition nodes. Here's an image of the whole animation tree/ blend tree.

![AnimationTree](https://user-images.githubusercontent.com/48493009/217973509-c1c61888-a7a5-4d59-b2db-8f55d47f6679.PNG)



I have a simple script, mostly made of integrated/default code + a small amount I added for adjusting what animation to play in the blend tree. 3 animations. Idle, jump, and fall, shown below.

![bugProjectCode](https://user-images.githubusercontent.com/48493009/217973524-1931d8da-b0f7-46d3-9236-888c45712557.PNG)



### Steps to reproduce

open included project, start game, press jump button (space) twice. (it works like it should the first time. But only the first time)

### Minimal reproduction project

[BlendTreeBug.zip](https://github.com/godotengine/godot/files/10702792/BlendTreeBug.zip)

Array conns;
		conns.resize(nc.size() * 3);
		int idx = 0;
		for (const NodeConnection &E : nc) {
			conns[idx * 3 + 0] = E.input_node;
			conns[idx * 3 + 1] = E.input_index;
			conns[idx * 3 + 2] = E.output_node;
			idx++;
		}
		r_ret = conns;
		return true;
	}
	return false;
}
void AnimationNodeBlendTree::_get_property_list(List<PropertyInfo> *p_list) const {
	List<StringName> names;
	for (const KeyValue<StringName, Node> &E : nodes) {
		names.push_back(E.key);
	}
	names.sort_custom<StringName::AlphCompare>();
	for (const StringName &E : names) {
		String prop_name = E;
		if (prop_name != "output") {
			p_list->push_back(PropertyInfo(Variant::OBJECT, "nodes/" + prop_name + "/node", PROPERTY_HINT_RESOURCE_TYPE, "AnimationNode", PROPERTY_USAGE_NO_EDITOR));
		}
		p_list->push_back(PropertyInfo(Variant::VECTOR2, "nodes/" + prop_name + "/position", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR));
	}
	p_list->push_back(PropertyInfo(Variant::ARRAY, "node_connections", PROPERTY_HINT_NONE, "", PROPERTY_USAGE_NO_EDITOR));
}
void AnimationNodeBlendTree::_tree_changed() {