mirror of
https://github.com/Rundll86/Dog-Lynx-And-HCN.git
synced 2026-06-29 15:02:29 +08:00
feat(子弹): 添加BlockWall子弹类型并实现击退效果
为CyberCat角色添加新的攻击类型3,发射BlockWall子弹 修改子弹资源为长条形并调整碰撞形状 实现子弹命中后的击退效果
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
[gd_scene format=3 uid="uid://cch4xtc70ad5c"]
|
[gd_scene format=3 uid="uid://cch4xtc70ad5c"]
|
||||||
|
|
||||||
[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_3kq6o"]
|
[ext_resource type="PackedScene" uid="uid://crtdkysmnkith" path="res://components/Abstracts/BulletBase.tscn" id="1_3kq6o"]
|
||||||
|
[ext_resource type="Script" uid="uid://b6bkhv8nc1ao3" path="res://scripts/Contents/Bullets/BlockWall.gd" id="2_3x2nv"]
|
||||||
[ext_resource type="Texture2D" uid="uid://cqcakyrw4vbfn" path="res://resources/bullets/blockwall/blockwall.svg" id="2_k65pw"]
|
[ext_resource type="Texture2D" uid="uid://cqcakyrw4vbfn" path="res://resources/bullets/blockwall/blockwall.svg" id="2_k65pw"]
|
||||||
|
|
||||||
[sub_resource type="SpriteFrames" id="SpriteFrames_3x2nv"]
|
[sub_resource type="SpriteFrames" id="SpriteFrames_3x2nv"]
|
||||||
@@ -14,7 +15,142 @@ animations = [{
|
|||||||
"speed": 5.0
|
"speed": 5.0
|
||||||
}]
|
}]
|
||||||
|
|
||||||
[node name="BulletBase" unique_id=5571707 instance=ExtResource("1_3kq6o")]
|
[sub_resource type="Animation" id="Animation_k65pw"]
|
||||||
|
length = 0.001
|
||||||
|
tracks/0/type = "bezier"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath(".:rotation")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"handle_modes": PackedInt32Array(0),
|
||||||
|
"points": PackedFloat32Array(0, -0.25, 0, 0.25, 0),
|
||||||
|
"times": PackedFloat32Array(0)
|
||||||
|
}
|
||||||
|
tracks/1/type = "bezier"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath(".:position:x")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"handle_modes": PackedInt32Array(0),
|
||||||
|
"points": PackedFloat32Array(0, -0.15, 0, 0.15, 0),
|
||||||
|
"times": PackedFloat32Array(0)
|
||||||
|
}
|
||||||
|
tracks/2/type = "value"
|
||||||
|
tracks/2/imported = false
|
||||||
|
tracks/2/enabled = true
|
||||||
|
tracks/2/path = NodePath(".:modulate")
|
||||||
|
tracks/2/interp = 1
|
||||||
|
tracks/2/loop_wrap = true
|
||||||
|
tracks/2/keys = {
|
||||||
|
"times": PackedFloat32Array(0),
|
||||||
|
"transitions": PackedFloat32Array(1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Color(1, 1, 1, 1)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_3x2nv"]
|
||||||
|
resource_name = "spawn"
|
||||||
|
length = 0.2
|
||||||
|
step = 0.1
|
||||||
|
tracks/0/type = "bezier"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath(".:position:x")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"handle_modes": PackedInt32Array(0, 0),
|
||||||
|
"points": PackedFloat32Array(0, 0, 0, 0.2, 0, -100, 0, 0, 0, 0),
|
||||||
|
"times": PackedFloat32Array(0, 0.2)
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath(".:modulate")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.2),
|
||||||
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_cdtmv"]
|
||||||
|
resource_name = "loop"
|
||||||
|
loop_mode = 1
|
||||||
|
step = 0.1
|
||||||
|
tracks/0/type = "value"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath(".:rotation")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 1),
|
||||||
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [0.0, 6.28319]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="Animation" id="Animation_a0fqf"]
|
||||||
|
resource_name = "spawn"
|
||||||
|
length = 0.2
|
||||||
|
step = 0.1
|
||||||
|
tracks/0/type = "bezier"
|
||||||
|
tracks/0/imported = false
|
||||||
|
tracks/0/enabled = true
|
||||||
|
tracks/0/path = NodePath(".:position:x")
|
||||||
|
tracks/0/interp = 1
|
||||||
|
tracks/0/loop_wrap = true
|
||||||
|
tracks/0/keys = {
|
||||||
|
"handle_modes": PackedInt32Array(2, 0),
|
||||||
|
"points": PackedFloat32Array(-100, 0, 0, 0, 0, 0, -0.2, 0, 0, 0),
|
||||||
|
"times": PackedFloat32Array(0, 0.2)
|
||||||
|
}
|
||||||
|
tracks/1/type = "value"
|
||||||
|
tracks/1/imported = false
|
||||||
|
tracks/1/enabled = true
|
||||||
|
tracks/1/path = NodePath(".:modulate")
|
||||||
|
tracks/1/interp = 1
|
||||||
|
tracks/1/loop_wrap = true
|
||||||
|
tracks/1/keys = {
|
||||||
|
"times": PackedFloat32Array(0, 0.2),
|
||||||
|
"transitions": PackedFloat32Array(1, 1),
|
||||||
|
"update": 0,
|
||||||
|
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="AnimationLibrary" id="AnimationLibrary_y5axk"]
|
||||||
|
_data = {
|
||||||
|
&"RESET": SubResource("Animation_k65pw"),
|
||||||
|
&"destroy": SubResource("Animation_3x2nv"),
|
||||||
|
&"loop": SubResource("Animation_cdtmv"),
|
||||||
|
&"spawn": SubResource("Animation_a0fqf")
|
||||||
|
}
|
||||||
|
|
||||||
|
[sub_resource type="RectangleShape2D" id="RectangleShape2D_k65pw"]
|
||||||
|
size = Vector2(734, 56)
|
||||||
|
|
||||||
|
[node name="BlockWall" unique_id=5571707 instance=ExtResource("1_3kq6o")]
|
||||||
|
script = ExtResource("2_3x2nv")
|
||||||
|
speed = -10.0
|
||||||
|
baseDamage = 0.0
|
||||||
|
penerate = 1.0
|
||||||
|
lifeTime = 1000.0
|
||||||
|
autoSpawnAnimation = true
|
||||||
|
autoDestroyAnimation = true
|
||||||
|
|
||||||
[node name="texture" parent="." index="0" unique_id=162977358]
|
[node name="texture" parent="." index="0" unique_id=162977358]
|
||||||
sprite_frames = SubResource("SpriteFrames_3x2nv")
|
sprite_frames = SubResource("SpriteFrames_3x2nv")
|
||||||
|
|
||||||
|
[node name="animator" parent="texture" index="0" unique_id=1114087117]
|
||||||
|
libraries/ = SubResource("AnimationLibrary_y5axk")
|
||||||
|
|
||||||
|
[node name="hitbox" parent="." index="1" unique_id=175349408]
|
||||||
|
rotation = 1.5707964
|
||||||
|
shape = SubResource("RectangleShape2D_k65pw")
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="135.65107" height="135.65107" viewBox="0,0,135.65107,135.65107"><g transform="translate(-215.66196,-141.65862)"><g fill-opacity="0.50196" fill="#ff9b87" stroke="#ff9b86" stroke-width="3" stroke-miterlimit="10"><path d="M217.16197,275.80969v-132.65107h132.65107v132.65107z"/></g></g></svg><!--rotationCenter:24.33803499999999:38.34137999999999-->
|
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="56.65107" height="734.65107" viewBox="0,0,56.65107,734.65107"><g transform="translate(-211.67446,187.32554)"><g fill-opacity="0.50196" fill="#ff9b87" stroke="#ff9b86" stroke-width="3" stroke-miterlimit="10"><path d="M213.17447,-185.82554l53.65107,0v731.65107l-53.65107,0z"/></g></g></svg><!--rotationCenter:28.32553500000003:367.3255350000002-->
|
||||||
|
Before Width: | Height: | Size: 449 B After Width: | Height: | Size: 449 B |
@@ -0,0 +1,5 @@
|
|||||||
|
extends BulletBase
|
||||||
|
class_name BlockWallBullet
|
||||||
|
|
||||||
|
func succeedToHit(_dmg: float, entity: EntityBase):
|
||||||
|
entity.impluse(Vector2.from_angle(rotation) * 1000)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
uid://b6bkhv8nc1ao3
|
||||||
@@ -8,10 +8,12 @@ func register():
|
|||||||
attackCooldownMap[0] = 6000
|
attackCooldownMap[0] = 6000
|
||||||
attackCooldownMap[1] = 10000
|
attackCooldownMap[1] = 10000
|
||||||
attackCooldownMap[2] = 100
|
attackCooldownMap[2] = 100
|
||||||
|
attackCooldownMap[3] = 200
|
||||||
func ai():
|
func ai():
|
||||||
PresetEntityAI.follow(self , currentFocusedBoss)
|
PresetEntityAI.follow(self , currentFocusedBoss)
|
||||||
for i in 3:
|
for i in 3:
|
||||||
tryAttack(i)
|
tryAttack(i)
|
||||||
|
PresetEntityAI.distanceAttack(self , currentFocusedBoss, 1000, INF, 3)
|
||||||
func attack(type: int):
|
func attack(type: int):
|
||||||
if type == 0:
|
if type == 0:
|
||||||
BulletBase.generate(ComponentManager.getBullet("Bengbeng"), self , position, 0)
|
BulletBase.generate(ComponentManager.getBullet("Bengbeng"), self , position, 0)
|
||||||
@@ -19,3 +21,8 @@ func attack(type: int):
|
|||||||
heal(percentHealth(0.05))
|
heal(percentHealth(0.05))
|
||||||
elif type == 2:
|
elif type == 2:
|
||||||
BulletBase.generate(ComponentManager.getBullet("SCBlock"), self , position, 0)
|
BulletBase.generate(ComponentManager.getBullet("SCBlock"), self , position, 0)
|
||||||
|
elif type == 3:
|
||||||
|
for bullet in BulletBase.generate(ComponentManager.getBullet("BlockWall"), self , currentFocusedBoss.hurtbox.global_position, 0):
|
||||||
|
if bullet is BlockWallBullet:
|
||||||
|
bullet.look_at(position)
|
||||||
|
bullet.position -= Vector2.from_angle(bullet.rotation) * 100
|
||||||
|
|||||||
@@ -50,8 +50,8 @@ static var WAVE_TESTBOSS_CHICK = [
|
|||||||
]
|
]
|
||||||
static var WAVE_JUSTJOKE = [
|
static var WAVE_JUSTJOKE = [
|
||||||
# Wave.create("Kernyr", 0, 0, true, 0, INF, 1),
|
# Wave.create("Kernyr", 0, 0, true, 0, INF, 1),
|
||||||
# Wave.create("CyberCat", 0, 0, true, 0, INF, 1),
|
Wave.create("CyberCat", 0, 0, true, 0, INF, 1),
|
||||||
Wave.create("Deepsea", 0, 0, true, 0, INF, 1)
|
# Wave.create("Deepsea", 0, 0, true, 0, INF, 1)
|
||||||
]
|
]
|
||||||
static var WAVE_MOWING = [
|
static var WAVE_MOWING = [
|
||||||
Wave.create("Hen", 15, 30, false, 0, INF, 1),
|
Wave.create("Hen", 15, 30, false, 0, INF, 1),
|
||||||
|
|||||||
Reference in New Issue
Block a user