Enemy bullets deflect off of surfaces

This commit is contained in:
karl 2021-06-07 19:20:38 +02:00
parent 825bc032da
commit 79c935a62f
3 changed files with 22 additions and 25 deletions

View File

@ -1,4 +1,4 @@
extends Spatial
extends KinematicBody
var target := Vector3.ZERO
@ -9,20 +9,20 @@ var velocity := Vector3.ZERO
export var acceleration_factor = 5.0
export var accelerating := false
func _ready():
$HitArea.connect("body_entered", self, "_on_hit_body")
export var coefficient_of_restitution := 0.5
func _on_hit_body(body):
if body.name == "Player":
print("Player hit!")
func _process(delta):
func _physics_process(delta):
if accelerating:
var direction = (target - global_transform.origin).normalized()
acceleration += direction * acceleration_factor * delta
velocity += acceleration
global_transform.origin += velocity * delta
var collision = move_and_collide(velocity * delta)
if collision:
var normal = collision.normal
velocity = coefficient_of_restitution * (velocity - 2 * velocity.dot(normal) * normal)
if collision.collider.name == "Player":
print("Player hit!")

File diff suppressed because one or more lines are too long

View File

@ -11,7 +11,7 @@ var bullet_scene = preload("res://Bullet.tscn")
var bullet_velocity = 40.0
var target
var velocity := Vector3(0.0, 5.0, 10.0)
var velocity := Vector3(0.0, 1.0, 1.0)
func _ready():
@ -40,7 +40,7 @@ func shoot_bullet():
var instance = bullet_scene.instance()
get_tree().get_root().add_child(instance)
instance.global_transform.origin = global_transform.origin
instance.global_transform.origin = global_transform.origin - global_transform.basis.z
instance.velocity = velocity + (target - global_transform.origin).normalized() * bullet_velocity