-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathRing.gd
More file actions
70 lines (62 loc) · 1.94 KB
/
Copy pathRing.gd
File metadata and controls
70 lines (62 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
extends MeshInstance3D
#var SHAPE := preload("res://enemies/ProjectileShape.tres")
@onready var SHAPE : Shape3D = $CollisionShape3D.shape
var query := PhysicsShapeQueryParameters3D.new()
@onready var spacestate := get_world_3d().direct_space_state
var damage := 1.
var speed := 30.
@export var vel : Vector3
var rot : Vector3
@export var projtype : String
@export var animationplayer : AnimationPlayer
var target : CharacterBody3D
var exception : String
var timemax := 5.
var type := "Regular"
var bonusproportey
var size := 1.
#@export_enum("Regular","Homing","Splitting","Growing","Large","Stationary") var type : String
var plusdeg := Vector3.ZERO
func _ready():
transparency = 0
rotation_degrees = plusdeg
#print(rotation_degrees)
query.shape = SHAPE
query.collide_with_bodies = true
#set("shader_parameter/scissor_value",30)
# in decimal binary 2^(layer -1)
query.collision_mask = 256
UI.projectilenumber += 1
#scale.y = 3
var time := 0.
var tm := 0.
func _process(delta):
time += delta
tm += delta
if(time > timemax):
Perish()
var tim = .02
if(tm > tim):
tm -= tim
CheckCollision()
scale += Vector3(delta * speed * time, time/2,delta * speed * time)
scale.y = clamp(scale.y,1,7) + size
#scale.y += size-1
func CheckCollision():
query.transform = global_transform
var result := spacestate.intersect_shape(query) # could also be collide_shape(), intersect_shape(), cast_motion(), get_rest_info()
#https://docs.godotengine.org/en/3.0/classes/class_physicsdirectspacestate.html#class-physicsdirectspacestate-collide-shape
if(result):
#queue_free()
var collider = result[0].collider
if(collider.name == exception or collider.name == "Floor"):
return
if(collider.has_method("OnDamageTaken")):
collider.OnDamageTaken(self, 0, 0, damage)
Perish()
func Perish():
set_process(false)
var tween = get_tree().create_tween()
await tween.tween_property(self,"transparency",1,.2).finished
hide()
process_mode = Node.PROCESS_MODE_DISABLED