Fixed an issue where weapons would block projectiles.
修复武器会阻挡抛射体的问题。
This commit is contained in:
parent
c2e84783e8
commit
eb6be280e0
|
@ -69,7 +69,7 @@ tile_set = ExtResource("1_rn2om")
|
||||||
|
|
||||||
[node name="Ground" type="TileMapLayer" parent="TileMap"]
|
[node name="Ground" type="TileMapLayer" parent="TileMap"]
|
||||||
use_parent_material = true
|
use_parent_material = true
|
||||||
tile_map_data = PackedByteArray("AAAAAAAAAQAAAAMAAAAAAAEAAQACAAEAAAAAAAIAAQACAAEAAAAAAAMAAQACAAEAAAAAAAQAAQACAAEAAAAAAAUAAQACAAEAAAAAAAYAAQACAAEAAAABAAAAAQABAAIAAAACAAAAAQABAAIAAAADAAAAAQABAAIAAAAEAAAAAQABAAIAAAAFAAAAAQABAAIAAAAGAAAAAQABAAIAAAAHAAAAAQABAAIAAAAIAAAAAQABAAIAAAAJAAAAAQABAAIAAAAKAAAAAQABAAIAAAALAAAAAQABAAIAAAAMAAAAAQABAAIAAAANAAAAAQABAAIAAAAOAAAAAQABAAIAAAAPAAAAAQABAAIAAAAQAAAAAQABAAIAAAARAAAAAQABAAIAAAASAAAAAQABAAIAAAATAAAAAQABAAIAAAAUAAAAAQABAAIAAAAVAAAAAQABAAIAAAAWAAAAAQACAAMAAAAWAAMAAQAAAAEAAAAWAAQAAQAAAAEAAAAWAAUAAQAAAAEAAAAWAAYAAQAAAAEAAAAWAAcAAQAAAAEAAAAWAAgAAQAAAAEAAAAWAAkAAQAAAAEAAAAWAAoAAQAAAAEAAAAWAAsAAQAAAAEAAAAWAAwAAQAAAAEAAAAAAAcAAQACAAEAAAAAAAgAAQACAAEAAAAAAAkAAQACAAEAAAAAAAoAAQACAAEAAAAAAAsAAQACAAEAAAAAAAwAAQACAAEAAAAVAA8AAQABAAAAAAAUAA8AAQABAAAAAAATAA8AAQABAAAAAAASAA8AAQABAAAAAAARAA8AAQABAAAAAAAQAA8AAQABAAAAAAAPAA8AAQABAAAAAAAOAA8AAQABAAAAAAANAA8AAQABAAAAAAAMAA8AAQABAAAAAAALAA8AAQABAAAAAAAKAA8AAQABAAAAAAAJAA8AAQABAAAAAAAIAA8AAQABAAAAAAAHAA8AAQABAAAAAAAGAA8AAQABAAAAAAAFAA8AAQABAAAAAAAEAA8AAQABAAAAAAADAA8AAQABAAAAAAACAA8AAQABAAAAAAABAA8AAQABAAAAAAAAAA8AAQAAAAUAAAAWAA8AAQACAAUAAAASAAsAAQAEAAQAAAATAAsAAQAEAAQAAAAUAAsAAQAEAAQAAAAVAAsAAQAFAAQAAAABAAsAAQADAAQAAAACAAsAAQAEAAQAAAADAAsAAQAEAAQAAAAEAAsAAQAEAAQAAAAFAAsAAQAEAAQAAAAGAAsAAQAEAAQAAAAHAAsAAQAEAAQAAAAIAAsAAQAEAAQAAAAOAAsAAQAEAAQAAAAPAAsAAQAEAAQAAAAQAAsAAQAEAAQAAAARAAsAAQAEAAQAAAABAAoAAQAEAAMAAAAVAAoAAQAEAAMAAAACAAoAAQAEAAIAAAAUAAoAAQAEAAIAAAANAAQAAQAEAAQAAAANAAwAAQAEAAQAAAAMAA0AAQAEAAQAAAALAA4AAQAEAAQAAAAJAAsAAQAEAAQAAAAGAAoAAQAEAAQAAAAHAAkAAQAEAAQAAAAIAAgAAQAEAAQAAAAJAAcAAQAEAAQAAAAKAAcAAQAEAAQAAAALAAcAAQAEAAQAAAAMAAcAAQAEAAQAAAANAAcAAQAEAAQAAAAOAAcAAQAEAAQAAAAPAAcAAQAEAAQAAAAQAAcAAQAEAAQAAAARAAcAAQAEAAQAAAASAAcAAQAEAAQAAAATAAcAAQAEAAQAAAAUAAcAAQAEAAQAAAAVAAcAAQAEAAQAAAABAAcAAQAEAAQAAAACAAcAAQAEAAQAAAADAAcAAQAEAAQAAAAEAAcAAQAEAAQAAAAFAAcAAQAEAAQAAAALAAYAAQAEAAQAAAAMAAUAAQAEAAQAAAAPAAMAAQAEAAQAAAAQAAMAAQAEAAQAAAARAAMAAQAEAAQAAAASAAMAAQAEAAQAAAATAAMAAQAEAAQAAAAUAAMAAQAEAAQAAAAVAAMAAQAEAAQAAAABAAMAAQAEAAQAAAACAAMAAQAEAAQAAAADAAMAAQAEAAQAAAAEAAMAAQAEAAQAAAAFAAMAAQAEAAQAAAAGAAMAAQAEAAQAAAAHAAMAAQAEAAQAAAAIAAMAAQAEAAQAAAAJAAMAAQAEAAQAAAA=")
|
tile_map_data = PackedByteArray("AAAAAAAAAQAAAAMAAAAAAAEAAQACAAEAAAAAAAIAAQACAAEAAAAAAAMAAQACAAEAAAAAAAQAAQACAAEAAAAAAAUAAQACAAEAAAAAAAYAAQACAAEAAAABAAAAAQABAAIAAAACAAAAAQABAAIAAAADAAAAAQABAAIAAAAEAAAAAQABAAIAAAAFAAAAAQABAAIAAAAGAAAAAQABAAIAAAAHAAAAAQABAAIAAAAIAAAAAQABAAIAAAAJAAAAAQABAAIAAAAKAAAAAQABAAIAAAALAAAAAQABAAIAAAAMAAAAAQABAAIAAAANAAAAAQABAAIAAAAOAAAAAQABAAIAAAAPAAAAAQABAAIAAAAQAAAAAQABAAIAAAARAAAAAQABAAIAAAASAAAAAQABAAIAAAATAAAAAQABAAIAAAAUAAAAAQABAAIAAAAVAAAAAQABAAIAAAAWAAAAAQACAAMAAAAWAAMAAQAAAAEAAAAWAAQAAQAAAAEAAAAWAAUAAQAAAAEAAAAWAAYAAQAAAAEAAAAWAAcAAQAAAAEAAAAWAAgAAQAAAAEAAAAWAAkAAQAAAAEAAAAWAAoAAQAAAAEAAAAWAAsAAQAAAAEAAAAWAAwAAQAAAAEAAAAAAAcAAQACAAEAAAAAAAgAAQACAAEAAAAAAAkAAQACAAEAAAAAAAoAAQACAAEAAAAAAAsAAQACAAEAAAAAAAwAAQACAAEAAAAVAA8AAQABAAAAAAAUAA8AAQABAAAAAAATAA8AAQABAAAAAAASAA8AAQABAAAAAAARAA8AAQABAAAAAAAQAA8AAQABAAAAAAAPAA8AAQABAAAAAAAOAA8AAQABAAAAAAANAA8AAQABAAAAAAAMAA8AAQABAAAAAAALAA8AAQABAAAAAAAKAA8AAQABAAAAAAAJAA8AAQABAAAAAAAIAA8AAQABAAAAAAAHAA8AAQABAAAAAAAGAA8AAQABAAAAAAAFAA8AAQABAAAAAAAEAA8AAQABAAAAAAADAA8AAQABAAAAAAACAA8AAQABAAAAAAABAA8AAQABAAAAAAAAAA8AAQAAAAUAAAAWAA8AAQACAAUAAAASAAsAAQAEAAQAAAATAAsAAQAEAAQAAAAUAAsAAQAEAAQAAAAVAAsAAQAFAAQAAAABAAsAAQADAAQAAAACAAsAAQAEAAQAAAADAAsAAQAEAAQAAAAEAAsAAQAEAAQAAAAFAAsAAQAEAAQAAAAGAAsAAQAEAAQAAAAHAAsAAQAEAAQAAAAIAAsAAQAEAAQAAAAOAAsAAQAEAAQAAAAPAAsAAQAEAAQAAAAQAAsAAQAEAAQAAAARAAsAAQAEAAQAAAABAAoAAQAEAAMAAAAVAAoAAQAEAAMAAAACAAoAAQAEAAIAAAAUAAoAAQAEAAIAAAANAAQAAQAEAAQAAAANAAwAAQAEAAQAAAAMAA0AAQAEAAQAAAALAA4AAQAEAAQAAAAJAAsAAQAEAAQAAAAGAAoAAQAEAAQAAAAHAAkAAQAEAAQAAAAIAAgAAQAEAAQAAAAJAAcAAQAEAAQAAAAKAAcAAQAEAAQAAAALAAcAAQAEAAQAAAAMAAcAAQAEAAQAAAANAAcAAQAEAAQAAAAOAAcAAQAEAAQAAAAPAAcAAQAEAAQAAAAQAAcAAQAEAAQAAAARAAcAAQAEAAQAAAASAAcAAQAEAAQAAAATAAcAAQAEAAQAAAAUAAcAAQAEAAQAAAAVAAcAAQAFAAQAAAABAAcAAQADAAQAAAACAAcAAQAEAAQAAAADAAcAAQAEAAQAAAAEAAcAAQAEAAQAAAAFAAcAAQAEAAQAAAALAAYAAQAEAAQAAAAMAAUAAQAEAAQAAAAPAAMAAQAEAAQAAAAQAAMAAQAEAAQAAAARAAMAAQAEAAQAAAASAAMAAQAEAAQAAAATAAMAAQAEAAQAAAAUAAMAAQAEAAQAAAAVAAMAAQAFAAQAAAABAAMAAQADAAQAAAACAAMAAQAEAAQAAAADAAMAAQAEAAQAAAAEAAMAAQAEAAQAAAAFAAMAAQAEAAQAAAAGAAMAAQAEAAQAAAAHAAMAAQAEAAQAAAAIAAMAAQAEAAQAAAAJAAMAAQAEAAQAAAAKAAMAAQAEAAQAAAAKAAsAAQAEAAQAAAALAAsAAQAEAAQAAAAGAAcAAQAEAAQAAAALAAMAAQAEAAQAAAAMAAMAAQAEAAQAAAA=")
|
||||||
tile_set = ExtResource("1_rn2om")
|
tile_set = ExtResource("1_rn2om")
|
||||||
|
|
||||||
[node name="Barrier" type="TileMapLayer" parent="TileMap"]
|
[node name="Barrier" type="TileMapLayer" parent="TileMap"]
|
||||||
|
|
|
@ -63,7 +63,7 @@ tile_set = ExtResource("2_k54gk")
|
||||||
|
|
||||||
[node name="Ground" type="TileMapLayer" parent="TileMap"]
|
[node name="Ground" type="TileMapLayer" parent="TileMap"]
|
||||||
use_parent_material = true
|
use_parent_material = true
|
||||||
tile_map_data = PackedByteArray("AAAAAAAAAQAAAAMAAAAAAAEAAQACAAEAAAAAAAIAAQACAAEAAAAAAAMAAQACAAEAAAAAAAQAAQACAAEAAAAAAAcAAQACAAEAAAAPAAAAAQABAAIAAAAAAAUAAQACAAEAAAAAAAYAAQACAAEAAAABAAAAAQABAAIAAAACAAAAAQABAAIAAAADAAAAAQABAAIAAAAEAAAAAQABAAIAAAAFAAAAAQABAAIAAAAGAAAAAQABAAIAAAAHAAAAAQABAAIAAAAIAAAAAQABAAIAAAAJAAAAAQABAAIAAAAKAAAAAQABAAIAAAALAAAAAQABAAIAAAAMAAAAAQABAAIAAAANAAAAAQABAAIAAAAOAAAAAQABAAMAAAAAAAoAAQAAAAUAAAABAAoAAQABAAAAAAACAAoAAQABAAAAAAADAAoAAQABAAAAAAAEAAoAAQABAAAAAAAFAAoAAQABAAAAAAAGAAoAAQABAAAAAAAHAAoAAQABAAAAAAAIAAoAAQABAAAAAAAJAAoAAQABAAAAAAAKAAoAAQABAAAAAAALAAoAAQABAAAAAAAMAAoAAQABAAAAAAANAAoAAQABAAAAAAAOAAoAAQABAAAAAAAPAAoAAQABAAAAAAAQAAoAAQABAAAAAAARAAoAAQABAAAAAAASAAoAAQABAAAAAAATAAoAAQABAAAAAAAUAAoAAQABAAAAAAAVAAoAAQABAAAAAAAWAAoAAQABAAAAAAAXAAoAAQACAAUAAAAQAAAAAQABAAIAAAARAAAAAQABAAIAAAASAAAAAQABAAIAAAATAAAAAQABAAIAAAAUAAAAAQABAAIAAAAXAAcAAQAAAAEAAAAXAAYAAQAAAAEAAAAXAAUAAQAAAAEAAAAXAAQAAQAAAAEAAAAXAAMAAQAAAAEAAAAXAAIAAQAAAAEAAAAXAAEAAQAAAAEAAAAXAAAAAQACAAMAAAAVAAAAAQABAAIAAAAWAAAAAQABAAIAAAAEAAkAAQAEAAQAAAAFAAgAAQAEAAQAAAAGAAcAAQAEAAQAAAAHAAYAAQAEAAQAAAAIAAUAAQAEAAQAAAAKAAUAAQAEAAQAAAAMAAUAAQAEAAQAAAAOAAUAAQADAAQAAAAQAAUAAQAEAAQAAAASAAUAAQADAAAAAAAJAAUAAQAEAAQAAAALAAUAAQAEAAQAAAANAAkAAQADAAAAAAANAAgAAQADAAAAAAANAAcAAQADAAAAAAANAAYAAQADAAAAAAANAAUAAQADAAAAAAAPAAUAAQAEAAQAAAARAAUAAQAFAAQAAAASAAYAAQADAAAAAAASAAcAAQADAAAAAAASAAQAAQADAAAAAAASAAMAAQADAAAAAAASAAIAAQADAAAAAAASAAEAAQADAAAAAAA=")
|
tile_map_data = PackedByteArray("AAAAAAAAAQAAAAMAAAAAAAEAAQACAAEAAAAAAAIAAQACAAEAAAAAAAMAAQACAAEAAAAAAAQAAQACAAEAAAAAAAcAAQACAAEAAAAPAAAAAQABAAIAAAAAAAUAAQACAAEAAAAAAAYAAQACAAEAAAABAAAAAQABAAIAAAACAAAAAQABAAIAAAADAAAAAQABAAIAAAAEAAAAAQABAAIAAAAFAAAAAQABAAIAAAAGAAAAAQABAAIAAAAHAAAAAQABAAIAAAAIAAAAAQABAAIAAAAJAAAAAQABAAIAAAAKAAAAAQABAAIAAAALAAAAAQABAAIAAAAMAAAAAQABAAIAAAANAAAAAQABAAIAAAAOAAAAAQABAAMAAAAAAAoAAQAAAAUAAAABAAoAAQABAAAAAAACAAoAAQABAAAAAAADAAoAAQABAAAAAAAEAAoAAQABAAAAAAAFAAoAAQABAAAAAAAGAAoAAQABAAAAAAAHAAoAAQABAAAAAAAIAAoAAQABAAAAAAAJAAoAAQABAAAAAAAKAAoAAQABAAAAAAALAAoAAQABAAAAAAAMAAoAAQABAAAAAAANAAoAAQABAAAAAAAOAAoAAQABAAAAAAAPAAoAAQABAAAAAAAQAAoAAQABAAAAAAARAAoAAQABAAAAAAASAAoAAQABAAAAAAATAAoAAQABAAAAAAAUAAoAAQABAAAAAAAVAAoAAQABAAAAAAAWAAoAAQABAAAAAAAXAAoAAQACAAUAAAAQAAAAAQABAAIAAAARAAAAAQABAAIAAAASAAAAAQABAAIAAAATAAAAAQABAAIAAAAUAAAAAQABAAIAAAAXAAcAAQAAAAEAAAAXAAYAAQAAAAEAAAAXAAUAAQAAAAEAAAAXAAQAAQAAAAEAAAAXAAMAAQAAAAEAAAAXAAIAAQAAAAEAAAAXAAEAAQAAAAEAAAAXAAAAAQACAAMAAAAVAAAAAQABAAIAAAAWAAAAAQABAAIAAAAEAAkAAQAEAAQAAAAFAAgAAQAEAAQAAAAGAAcAAQAEAAQAAAAHAAYAAQAEAAQAAAAIAAUAAQAEAAQAAAAKAAUAAQAEAAQAAAAMAAUAAQAEAAQAAAASAAUAAQADAAAAAAAJAAUAAQAEAAQAAAALAAUAAQAEAAQAAAANAAkAAQADAAAAAAANAAgAAQADAAAAAAANAAcAAQADAAAAAAANAAYAAQADAAAAAAANAAUAAQADAAAAAAASAAYAAQADAAAAAAASAAcAAQADAAAAAAASAAQAAQADAAAAAAASAAMAAQADAAAAAAASAAIAAQADAAAAAAASAAEAAQADAAAAAAAOAAUAAQADAAQAAAAPAAYAAQAEAAQAAAAQAAcAAQAEAAQAAAARAAgAAQAEAAQAAAAQAAkAAQAEAAQAAAA=")
|
||||||
tile_set = ExtResource("2_k54gk")
|
tile_set = ExtResource("2_k54gk")
|
||||||
|
|
||||||
[node name="Barrier" type="TileMapLayer" parent="TileMap"]
|
[node name="Barrier" type="TileMapLayer" parent="TileMap"]
|
||||||
|
|
|
@ -6,10 +6,10 @@
|
||||||
[ext_resource type="AudioStream" uid="uid://cak6chjjsu7wo" path="res://sounds/fire.wav" id="4_p12sk"]
|
[ext_resource type="AudioStream" uid="uid://cak6chjjsu7wo" path="res://sounds/fire.wav" id="4_p12sk"]
|
||||||
|
|
||||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_obcq2"]
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_obcq2"]
|
||||||
size = Vector2(49, 5)
|
size = Vector2(48, 5)
|
||||||
|
|
||||||
[sub_resource type="RectangleShape2D" id="RectangleShape2D_14m1g"]
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_14m1g"]
|
||||||
size = Vector2(49, 5.25)
|
size = Vector2(48, 5)
|
||||||
|
|
||||||
[node name="BeginnerStaff" type="RigidBody2D"]
|
[node name="BeginnerStaff" type="RigidBody2D"]
|
||||||
collision_layer = 8
|
collision_layer = 8
|
||||||
|
@ -26,7 +26,7 @@ collision_layer = 8
|
||||||
collision_mask = 102
|
collision_mask = 102
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="DamageArea2D"]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="DamageArea2D"]
|
||||||
position = Vector2(25.5, 0.5)
|
position = Vector2(26, 0.5)
|
||||||
shape = SubResource("RectangleShape2D_obcq2")
|
shape = SubResource("RectangleShape2D_obcq2")
|
||||||
|
|
||||||
[node name="StaffOfTheUndead2" type="Sprite2D" parent="."]
|
[node name="StaffOfTheUndead2" type="Sprite2D" parent="."]
|
||||||
|
@ -34,7 +34,7 @@ position = Vector2(30, 0)
|
||||||
texture = ExtResource("3_rhhwp")
|
texture = ExtResource("3_rhhwp")
|
||||||
|
|
||||||
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
|
||||||
position = Vector2(25.5, 0.375)
|
position = Vector2(26, 0.5)
|
||||||
shape = SubResource("RectangleShape2D_14m1g")
|
shape = SubResource("RectangleShape2D_14m1g")
|
||||||
|
|
||||||
[node name="Marker2D" type="Marker2D" parent="."]
|
[node name="Marker2D" type="Marker2D" parent="."]
|
||||||
|
|
|
@ -23,6 +23,7 @@ _recoilStrength = 5
|
||||||
UniqueIcon = ExtResource("3_31iau")
|
UniqueIcon = ExtResource("3_31iau")
|
||||||
|
|
||||||
[node name="DamageArea2D" type="Area2D" parent="."]
|
[node name="DamageArea2D" type="Area2D" parent="."]
|
||||||
|
visible = false
|
||||||
collision_layer = 8
|
collision_layer = 8
|
||||||
collision_mask = 102
|
collision_mask = 102
|
||||||
|
|
||||||
|
|
|
@ -71,6 +71,7 @@ public partial class CharacterTemplate : CharacterBody2D
|
||||||
|
|
||||||
protected const float JumpVelocity = -240;
|
protected const float JumpVelocity = -240;
|
||||||
|
|
||||||
|
//How long it takes for an item to recover from a collision with the ground and platform after being thrown (in seconds)
|
||||||
//物品被扔出后多长时间恢复与地面和平台的碰撞(单位:秒)
|
//物品被扔出后多长时间恢复与地面和平台的碰撞(单位:秒)
|
||||||
private readonly double _itemCollisionRecoveryTime = 0.045f;
|
private readonly double _itemCollisionRecoveryTime = 0.045f;
|
||||||
|
|
||||||
|
@ -407,7 +408,6 @@ public partial class CharacterTemplate : CharacterBody2D
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//The item store is marked null, or the item container is null.
|
//The item store is marked null, or the item container is null.
|
||||||
//物品存放的标记为null,或者物品容器为null。
|
//物品存放的标记为null,或者物品容器为null。
|
||||||
if (ItemMarker2D == null || ItemContainer == null)
|
if (ItemMarker2D == null || ItemContainer == null)
|
||||||
|
@ -437,14 +437,13 @@ public partial class CharacterTemplate : CharacterBody2D
|
||||||
//您可以在这里补充更多类型对象的捡起状态处理。
|
//您可以在这里补充更多类型对象的捡起状态处理。
|
||||||
if (pickAbleItemNode2D is PickAbleTemplate pickAbleTemplate)
|
if (pickAbleItemNode2D is PickAbleTemplate pickAbleTemplate)
|
||||||
{
|
{
|
||||||
|
pickAbleTemplate.LoadingResource();
|
||||||
pickAbleTemplate.Owner = this;
|
pickAbleTemplate.Owner = this;
|
||||||
pickAbleTemplate.Picked = true;
|
pickAbleTemplate.Picked = true;
|
||||||
pickAbleTemplate.SetCollisionMaskValue(Config.LayerNumber.Platform, false);
|
pickAbleTemplate.Freeze = true;
|
||||||
pickAbleTemplate.SetCollisionMaskValue(Config.LayerNumber.Floor, false);
|
pickAbleTemplate.DisabledCollisionShape2D();
|
||||||
pickAbleTemplate.SetCollisionMaskValue(Config.LayerNumber.Wall, false);
|
|
||||||
LogCat.Log("item_pickup_disables_collision_damage", LogCat.LogLabel.ContactInjury);
|
|
||||||
pickAbleTemplate.EnableContactInjury = false;
|
pickAbleTemplate.EnableContactInjury = false;
|
||||||
pickAbleTemplate.Sleeping = true;
|
LogCat.Log("item_pickup_disables_collision_damage", LogCat.LogLabel.ContactInjury);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pickAbleItemNode2D is ProjectileWeapon projectileWeapon)
|
if (pickAbleItemNode2D is ProjectileWeapon projectileWeapon)
|
||||||
|
@ -805,10 +804,14 @@ public partial class CharacterTemplate : CharacterBody2D
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
pickAbleTemplate.LoadingResource();
|
||||||
pickAbleTemplate.Sleeping = false;
|
|
||||||
pickAbleTemplate.Owner = this;
|
pickAbleTemplate.Owner = this;
|
||||||
pickAbleTemplate.Picked = false;
|
pickAbleTemplate.Picked = false;
|
||||||
|
//Setting an initial speed of 0 for items here prevents the problem of throwing items too fast.
|
||||||
|
//在这里给物品设置一个为0的初始速度,可防止扔出物品时速度过快的问题。
|
||||||
|
pickAbleTemplate.LinearVelocity = Vector2.Zero;
|
||||||
|
pickAbleTemplate.EnabledCollisionShape2D();
|
||||||
|
pickAbleTemplate.Freeze = false;
|
||||||
var timer = new Timer();
|
var timer = new Timer();
|
||||||
pickAbleTemplate.AddChild(timer);
|
pickAbleTemplate.AddChild(timer);
|
||||||
timer.WaitTime = _itemCollisionRecoveryTime;
|
timer.WaitTime = _itemCollisionRecoveryTime;
|
||||||
|
@ -820,14 +823,9 @@ public partial class CharacterTemplate : CharacterBody2D
|
||||||
//仍出武器时,我们不能立即恢复物理碰撞,立即恢复会导致武器更早的与地面和平台碰撞,阻止武器的飞行。
|
//仍出武器时,我们不能立即恢复物理碰撞,立即恢复会导致武器更早的与地面和平台碰撞,阻止武器的飞行。
|
||||||
pickAbleTemplate.EnableContactInjury = true;
|
pickAbleTemplate.EnableContactInjury = true;
|
||||||
LogCat.Log("item_thrown_restore_collision_damage", LogCat.LogLabel.ContactInjury);
|
LogCat.Log("item_thrown_restore_collision_damage", LogCat.LogLabel.ContactInjury);
|
||||||
pickAbleTemplate.SetCollisionMaskValue(Config.LayerNumber.Floor, true);
|
|
||||||
pickAbleTemplate.SetCollisionMaskValue(Config.LayerNumber.Wall, true);
|
|
||||||
pickAbleTemplate.SetCollisionMaskValue(Config.LayerNumber.Platform, true);
|
|
||||||
timer.QueueFree();
|
timer.QueueFree();
|
||||||
};
|
};
|
||||||
//Setting an initial speed of 0 for items here prevents the problem of throwing items too fast.
|
|
||||||
//在这里给物品设置一个为0的初始速度,可防止扔出物品时速度过快的问题。
|
|
||||||
pickAbleTemplate.LinearVelocity = Vector2.Zero;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -85,6 +85,12 @@ public partial class PickAbleTemplate : RigidBody2D, IItem
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private Area2D? _damageArea2D;
|
private Area2D? _damageArea2D;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// <para>Damage collision shape</para>
|
||||||
|
/// <para>伤害的碰撞形状</para>
|
||||||
|
/// </summary>
|
||||||
|
private CollisionShape2D? _damageAreaCollisionShape2D;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// <para>Whether the item is currently picked up</para>
|
/// <para>Whether the item is currently picked up</para>
|
||||||
/// <para>当前物品是否被捡起了</para>
|
/// <para>当前物品是否被捡起了</para>
|
||||||
|
@ -192,17 +198,38 @@ public partial class PickAbleTemplate : RigidBody2D, IItem
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private CollisionShape2D? _collisionShape2D;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// <para>Whether the resource has been loaded</para>
|
||||||
|
/// <para>是否已加载过资源了</para>
|
||||||
|
/// </summary>
|
||||||
|
private bool _loadedResource;
|
||||||
|
|
||||||
public override void _Ready()
|
public override void _Ready()
|
||||||
{
|
{
|
||||||
|
LoadingResource();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void LoadingResource()
|
||||||
|
{
|
||||||
|
if (_loadedResource)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
_damageArea2D = GetNode<Area2D>("DamageArea2D");
|
_damageArea2D = GetNode<Area2D>("DamageArea2D");
|
||||||
|
_damageAreaCollisionShape2D = _damageArea2D.GetNode<CollisionShape2D>("CollisionShape2D");
|
||||||
_damageArea2D.BodyEntered += OnBodyEnter;
|
_damageArea2D.BodyEntered += OnBodyEnter;
|
||||||
_damageArea2D.BodyExited += OnBodyExited;
|
_damageArea2D.BodyExited += OnBodyExited;
|
||||||
_tipLabel = GetNodeOrNull<Label>("TipLabel");
|
_tipLabel = GetNodeOrNull<Label>("TipLabel");
|
||||||
|
_collisionShape2D = GetNode<CollisionShape2D>("CollisionShape2D");
|
||||||
InputPickable = true;
|
InputPickable = true;
|
||||||
SetCollisionMaskValue(Config.LayerNumber.Wall, true);
|
SetCollisionMaskValue(Config.LayerNumber.Wall, true);
|
||||||
SetCollisionMaskValue(Config.LayerNumber.Platform, true);
|
SetCollisionMaskValue(Config.LayerNumber.Platform, true);
|
||||||
SetCollisionMaskValue(Config.LayerNumber.Floor, true);
|
SetCollisionMaskValue(Config.LayerNumber.Floor, true);
|
||||||
SetCollisionMaskValue(Config.LayerNumber.Barrier, true);
|
SetCollisionMaskValue(Config.LayerNumber.Barrier, true);
|
||||||
|
_loadedResource = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnBodyExited(Node node)
|
private void OnBodyExited(Node node)
|
||||||
|
@ -340,6 +367,42 @@ public partial class PickAbleTemplate : RigidBody2D, IItem
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// <para>Collision forbidden shape</para>
|
||||||
|
/// <para>禁用碰撞形状</para>
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
///<para>Prevents pickables from blocking projectiles.</para>
|
||||||
|
///<para>防止可拾捡物阻挡抛射体。</para>
|
||||||
|
/// </remarks>
|
||||||
|
public void DisabledCollisionShape2D()
|
||||||
|
{
|
||||||
|
if (_collisionShape2D != null)
|
||||||
|
{
|
||||||
|
_collisionShape2D.Disabled = true;
|
||||||
|
}
|
||||||
|
if (_damageAreaCollisionShape2D != null)
|
||||||
|
{
|
||||||
|
_damageAreaCollisionShape2D.Disabled = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// <para>EnabledCollisionShape2D</para>
|
||||||
|
/// <para>启用碰撞形状</para>
|
||||||
|
/// </summary>
|
||||||
|
public void EnabledCollisionShape2D()
|
||||||
|
{
|
||||||
|
if (_collisionShape2D != null)
|
||||||
|
{
|
||||||
|
_collisionShape2D.Disabled = false;
|
||||||
|
}
|
||||||
|
if (_damageAreaCollisionShape2D != null)
|
||||||
|
{
|
||||||
|
_damageAreaCollisionShape2D.Disabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// <para>Please copy node properties within this function</para>
|
/// <para>Please copy node properties within this function</para>
|
||||||
/// <para>请在此函数内复制节点属性</para>
|
/// <para>请在此函数内复制节点属性</para>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user