mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-02-06 07:14:55 +08:00
[godot] Fix SpineBoneNode scale application.
This commit is contained in:
parent
b9b123ff48
commit
afdce49a20
@ -1,11 +1,11 @@
|
||||
extends Node2D
|
||||
|
||||
onready var spineboy: SpineSprite = $Spineboy
|
||||
|
||||
func _world_transforms_changed(_sprite):
|
||||
spineboy.set_global_bone_transform("crosshair", Transform2D(0, get_viewport().get_mouse_position()))
|
||||
onready var crosshair_bone: SpineBoneNode = $Spineboy/CrosshairBone
|
||||
|
||||
func _ready():
|
||||
spineboy.get_animation_state().set_animation("walk", true, 0)
|
||||
spineboy.get_animation_state().set_animation("aim", true, 1)
|
||||
spineboy.connect("world_transforms_changed", self, "_world_transforms_changed")
|
||||
|
||||
func _process(_delta):
|
||||
crosshair_bone.global_position = get_viewport().get_mouse_position()
|
||||
|
||||
@ -13,3 +13,9 @@ skeleton_data_res = ExtResource( 2 )
|
||||
preview_animation = "-- Empty --"
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
|
||||
[node name="CrosshairBone" type="SpineBoneNode" parent="Spineboy"]
|
||||
position = Vector2( 302.333, -569.714 )
|
||||
rotation = -0.000872665
|
||||
bone_name = "crosshair"
|
||||
bone_mode = 1
|
||||
|
||||
@ -1,11 +1,6 @@
|
||||
extends Node2D
|
||||
|
||||
onready var spineboy: SpineSprite = $Spineboy
|
||||
onready var sprite: Sprite = $Spineboy/Sprite
|
||||
|
||||
func _world_transforms_changed(_sprite):
|
||||
sprite.global_transform = spineboy.get_global_bone_transform("gun-tip")
|
||||
|
||||
func _ready():
|
||||
var spineboy: SpineSprite = $Spineboy
|
||||
spineboy.get_animation_state().set_animation("walk", true, 0)
|
||||
spineboy.connect("world_transforms_changed", self, "_world_transforms_changed")
|
||||
|
||||
@ -11,7 +11,16 @@ script = ExtResource( 2 )
|
||||
position = Vector2( 478, 483 )
|
||||
scale = Vector2( 0.58461, 0.58461 )
|
||||
skeleton_data_res = ExtResource( 1 )
|
||||
preview_animation = ""
|
||||
preview_frame = false
|
||||
preview_time = 0.0
|
||||
|
||||
[node name="Sprite" type="Sprite" parent="Spineboy"]
|
||||
position = Vector2( 20, 20 )
|
||||
[node name="GunTipBone" type="SpineBoneNode" parent="Spineboy"]
|
||||
position = Vector2( 214.298, -162.047 )
|
||||
rotation = 0.713316
|
||||
scale = Vector2( 1, 1 )
|
||||
bone_name = "gun-tip"
|
||||
|
||||
[node name="Sprite" type="Sprite" parent="Spineboy/GunTipBone"]
|
||||
scale = Vector2( 1, 1 )
|
||||
texture = ExtResource( 3 )
|
||||
|
||||
@ -481,7 +481,7 @@ void SpineBone::set_global_transform(Transform2D transform) {
|
||||
if (parent) {
|
||||
parent->worldToLocal(local_x, local_y, local_x, local_y);
|
||||
parent->worldToLocal(position.x + local_scale.x, position.y + local_scale.y, local_scale.x, local_scale.y);
|
||||
local_scale.x -= local_x;
|
||||
local_scale.x = (local_scale.x - local_x);
|
||||
local_scale.y = -(local_scale.y - local_y);
|
||||
local_rotation = 180 + bone->worldToLocalRotation(local_rotation);
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user