mirror of
https://github.com/EsotericSoftware/spine-runtimes.git
synced 2026-03-26 22:49:01 +08:00
[godot] Fix SpineBoneNode scale application.
This commit is contained in:
parent
b9b123ff48
commit
afdce49a20
@ -1,11 +1,11 @@
|
|||||||
extends Node2D
|
extends Node2D
|
||||||
|
|
||||||
onready var spineboy: SpineSprite = $Spineboy
|
onready var spineboy: SpineSprite = $Spineboy
|
||||||
|
onready var crosshair_bone: SpineBoneNode = $Spineboy/CrosshairBone
|
||||||
func _world_transforms_changed(_sprite):
|
|
||||||
spineboy.set_global_bone_transform("crosshair", Transform2D(0, get_viewport().get_mouse_position()))
|
|
||||||
|
|
||||||
func _ready():
|
func _ready():
|
||||||
spineboy.get_animation_state().set_animation("walk", true, 0)
|
spineboy.get_animation_state().set_animation("walk", true, 0)
|
||||||
spineboy.get_animation_state().set_animation("aim", true, 1)
|
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_animation = "-- Empty --"
|
||||||
preview_frame = false
|
preview_frame = false
|
||||||
preview_time = 0.0
|
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
|
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():
|
func _ready():
|
||||||
|
var spineboy: SpineSprite = $Spineboy
|
||||||
spineboy.get_animation_state().set_animation("walk", true, 0)
|
spineboy.get_animation_state().set_animation("walk", true, 0)
|
||||||
spineboy.connect("world_transforms_changed", self, "_world_transforms_changed")
|
spineboy.connect("world_transforms_changed", self, "_world_transforms_changed")
|
||||||
|
|||||||
@ -11,7 +11,16 @@ script = ExtResource( 2 )
|
|||||||
position = Vector2( 478, 483 )
|
position = Vector2( 478, 483 )
|
||||||
scale = Vector2( 0.58461, 0.58461 )
|
scale = Vector2( 0.58461, 0.58461 )
|
||||||
skeleton_data_res = ExtResource( 1 )
|
skeleton_data_res = ExtResource( 1 )
|
||||||
|
preview_animation = ""
|
||||||
|
preview_frame = false
|
||||||
|
preview_time = 0.0
|
||||||
|
|
||||||
[node name="Sprite" type="Sprite" parent="Spineboy"]
|
[node name="GunTipBone" type="SpineBoneNode" parent="Spineboy"]
|
||||||
position = Vector2( 20, 20 )
|
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 )
|
texture = ExtResource( 3 )
|
||||||
|
|||||||
@ -481,7 +481,7 @@ void SpineBone::set_global_transform(Transform2D transform) {
|
|||||||
if (parent) {
|
if (parent) {
|
||||||
parent->worldToLocal(local_x, local_y, local_x, local_y);
|
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);
|
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_scale.y = -(local_scale.y - local_y);
|
||||||
local_rotation = 180 + bone->worldToLocalRotation(local_rotation);
|
local_rotation = 180 + bone->worldToLocalRotation(local_rotation);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user