bullets and hitscan
This commit is contained in:
parent
08d0859728
commit
eaa487f16a
11 changed files with 60 additions and 1 deletions
|
@ -10,7 +10,7 @@
|
||||||
[ext_resource type="Texture2D" uid="uid://bu54h8g5r50qp" path="res://base/assets/sprites/test_enemy/0006.png" id="8_snoby"]
|
[ext_resource type="Texture2D" uid="uid://bu54h8g5r50qp" path="res://base/assets/sprites/test_enemy/0006.png" id="8_snoby"]
|
||||||
[ext_resource type="Texture2D" uid="uid://c57drlhnuicu5" path="res://base/assets/sprites/test_enemy/0007.png" id="9_83myg"]
|
[ext_resource type="Texture2D" uid="uid://c57drlhnuicu5" path="res://base/assets/sprites/test_enemy/0007.png" id="9_83myg"]
|
||||||
|
|
||||||
[node name="TestEnemy" type="Node3D"]
|
[node name="TestEnemy" type="Node3D" groups=["enemy"]]
|
||||||
|
|
||||||
[node name="RotationalSprite" type="Sprite3D" parent="."]
|
[node name="RotationalSprite" type="Sprite3D" parent="."]
|
||||||
billboard = 2
|
billboard = 2
|
||||||
|
|
10
base/scenes/projectiles/hitscan.tscn
Normal file
10
base/scenes/projectiles/hitscan.tscn
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
[gd_scene load_steps=2 format=3 uid="uid://c0rimfst01gsx"]
|
||||||
|
|
||||||
|
[ext_resource type="Script" uid="uid://coayruqnqqvdn" path="res://base/scripts/projectiles/hitscan.gd" id="1_fkkr2"]
|
||||||
|
|
||||||
|
[node name="Hitscan" type="RayCast3D"]
|
||||||
|
target_position = Vector3(0, 0, 1000)
|
||||||
|
collision_mask = 4
|
||||||
|
hit_from_inside = true
|
||||||
|
collide_with_areas = true
|
||||||
|
script = ExtResource("1_fkkr2")
|
16
base/scripts/projectiles/hitscan.gd
Normal file
16
base/scripts/projectiles/hitscan.gd
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
extends RayCast3D
|
||||||
|
|
||||||
|
var damage : float
|
||||||
|
|
||||||
|
func _ready() -> void:
|
||||||
|
if is_colliding():
|
||||||
|
var collider = get_collider()
|
||||||
|
# API говорит, что коллайдер может не оказаться нодой3д
|
||||||
|
if collider is Node3D:
|
||||||
|
# Проверяем, является ли ссылка на хитбокс, или нам дали ссылку на основной объект
|
||||||
|
if collider.is_in_group("enemy"):
|
||||||
|
collider.get_node("Entity").deal_damage(damage)
|
||||||
|
elif collider.get_parent().is_in_group("enemy"):
|
||||||
|
collider.get_parent().get_node("Entity").deal_damage(damage)
|
||||||
|
|
||||||
|
queue_free()
|
1
base/scripts/projectiles/hitscan.gd.uid
Normal file
1
base/scripts/projectiles/hitscan.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://coayruqnqqvdn
|
8
base/scripts/weapons/bullet/base_bullet.gd
Normal file
8
base/scripts/weapons/bullet/base_bullet.gd
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
extends Resource
|
||||||
|
|
||||||
|
class_name BaseBullet
|
||||||
|
|
||||||
|
@export var damage : float
|
||||||
|
|
||||||
|
func get_packed_scene() -> PackedScene:
|
||||||
|
return null
|
1
base/scripts/weapons/bullet/base_bullet.gd.uid
Normal file
1
base/scripts/weapons/bullet/base_bullet.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://bkbaoqw8rbrwq
|
8
base/scripts/weapons/bullet/hitscan_bullet.gd
Normal file
8
base/scripts/weapons/bullet/hitscan_bullet.gd
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
extends BaseBullet
|
||||||
|
|
||||||
|
class_name HitscanBullet
|
||||||
|
|
||||||
|
const scene := preload("uid://c0rimfst01gsx")
|
||||||
|
|
||||||
|
func get_packed_scene() -> PackedScene:
|
||||||
|
return scene
|
1
base/scripts/weapons/bullet/hitscan_bullet.gd.uid
Normal file
1
base/scripts/weapons/bullet/hitscan_bullet.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://bipb70gqcdauu
|
9
base/scripts/weapons/bullet/projectile_bullet.gd
Normal file
9
base/scripts/weapons/bullet/projectile_bullet.gd
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
extends BaseBullet
|
||||||
|
|
||||||
|
class_name ProjectileBullet
|
||||||
|
|
||||||
|
@export var scene : PackedScene
|
||||||
|
@export var speed : float
|
||||||
|
|
||||||
|
func get_packed_scene() -> PackedScene:
|
||||||
|
return scene
|
1
base/scripts/weapons/bullet/projectile_bullet.gd.uid
Normal file
1
base/scripts/weapons/bullet/projectile_bullet.gd.uid
Normal file
|
@ -0,0 +1 @@
|
||||||
|
uid://uwtm5i5lajia
|
|
@ -19,6 +19,10 @@ config/icon="uid://3tgkfxqayrbo"
|
||||||
|
|
||||||
project/assembly_name="Revenge of the Red Dragon Pon of the Red Dragon Pon of the Red Dragon Pon"
|
project/assembly_name="Revenge of the Red Dragon Pon of the Red Dragon Pon of the Red Dragon Pon"
|
||||||
|
|
||||||
|
[global_group]
|
||||||
|
|
||||||
|
enemy="Group for all enemy objects. This group should contain Entity node as child."
|
||||||
|
|
||||||
[input]
|
[input]
|
||||||
|
|
||||||
move_forward={
|
move_forward={
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue