37 lines
1.2 KiB
GDScript
37 lines
1.2 KiB
GDScript
extends CharacterBody3D
|
|
|
|
|
|
const SPEED = 3.0
|
|
const JUMP_VELOCITY = 4.5
|
|
|
|
var bullettimer = 50
|
|
var bulletshot = false
|
|
var bulletrandom
|
|
|
|
# Get the gravity from the project settings to be synced with RigidBody nodes.
|
|
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
|
|
|
|
@onready var player = get_node(^"/root/tutorial/Teddy")
|
|
@export var Bullet = preload("res://objects/Bullet/Bullet.tscn")
|
|
|
|
func _physics_process(delta):
|
|
# Add the gravity.
|
|
if not is_on_floor():
|
|
velocity.y -= gravity * delta
|
|
|
|
|
|
if player and Global.playerAlive:
|
|
bullettimer = bullettimer - 10 * delta
|
|
if bullettimer < 0 and bulletshot == false:
|
|
bulletshot = true
|
|
var b = Bullet.instantiate()
|
|
owner.add_child(b)
|
|
b.transform = $CollisionShape3D/Neck/BulletGenerator.global_transform
|
|
b.velocity = -b.global_transform.basis.z * b.muzzle_velocity
|
|
elif bulletshot == true:
|
|
bulletshot = false
|
|
bulletrandom = randf_range(1.0, 50.0)
|
|
bullettimer = bulletrandom
|
|
velocity = (player.transform.origin - transform.origin).normalized() * SPEED
|
|
$CollisionShape3D.look_at(Vector3(player.global_transform.origin.x, global_transform.origin.y, player.global_transform.origin.z), Vector3(0,1,0))
|
|
move_and_slide()
|