forked from andreyratz/block
57 lines
1.5 KiB
Plaintext
57 lines
1.5 KiB
Plaintext
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x1*x2+y1*y2
|
|
|
|
along normal speedx*sp
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var proje_normal = global_transform.x.normalized()
|
|
#proje_normal.y = -proje_normal.y
|
|
print("Proje Normal: ", proje_normal)
|
|
var speed_perp: float = proje_normal.dot(normal)
|
|
var perp_line: Vector2 = Vector2(normal.y,-normal.x)
|
|
var speed_para: float = proje_normal.dot(perp_line)
|
|
print("speed perp: ", speed_perp)
|
|
print("speed para: ", speed_para)
|
|
# this is just to check my math
|
|
# should be aproximately 1 (there will be some bit depth precision errors)
|
|
print("speed hype: ", speed_para*speed_para + speed_perp*speed_perp)
|
|
|
|
var newDirection: Vector2 = Vector2(
|
|
(speed_perp * normal.x) + (speed_para * normal.y),
|
|
(speed_perp * normal.y) + (speed_para *-normal.x))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var projectile_velocity = area.get_parent().get_facing_direction()
|
|
print("projectile speed......................", projectile_velocity)
|
|
var shield_normal = global_transform.x.normalized()
|
|
print("Shield Normal: ", shield_normal)
|
|
#shield_normal.y = -shield_normal.y
|
|
# if abs(projectile_velocity.y)>abs(projectile_velocity.x):
|
|
# shield_normal = global_transform.y.normalized()
|
|
#shield_normal.y = -shield_normal.y
|
|
#shield_normal.x = -shield_normal.x
|
|
# var shield_perp = Vector2(shield_normal.y,-shield_normal.x)
|
|
# if area.has_method("bounce"):
|
|
# if projectile_velocity.dot(shield_perp) < 0:
|
|
# area.bounce(shield_normal)
|
|
if area.has_method("bounce"):
|
|
#if projectile_velocity.dot(shield_normal) < 0:
|
|
area.bounce(shield_normal) |