extends RigidBody3D @onready var mesh = $BallMesh @onready var body = $BallBody @onready var body_anchor = $AnchorBody @export var speed : float @export var gravity : Vector3 @export var stiffness : float var previous_collision_normal_array = [] var normalize_velocity = true var previous_travel : Vector3 func _ready(): body.add_collision_exception_with(body_anchor) body_anchor.add_collision_exception_with(body) linear_velocity = linear_velocity.normalized() * speed # Engine.time_scale = 1 func _physics_process(delta): if global_position.length() >= 100: print("a") queue_free() var collision : KinematicCollision3D = body.move_and_collide(linear_velocity * delta, true) if collision: var collision_position = collision.get_position() $TestMesh.global_position = collision_position mesh.look_at($TestMesh.global_position, Vector3.UP) if collision.get_collider().owner.is_in_group("balls"): mesh.scale.z = (global_position - collision.get_collider().global_position).length() else: mesh.scale.z = (collision_position - global_position).length() * 2 mesh.scale.x = 1.5 - mesh.scale.z / 2 mesh.scale.y = 1.5 - mesh.scale.z / 2 # var current_travel = collision.get_travel().normalized() # linear_velocity += current_travel * pow(speed, 2) * delta # normalize_velocity = false else: mesh.scale = Vector3.ONE linear_velocity = linear_velocity.normalized() * speed constant_force = gravity + (body_anchor.global_position - global_position) * 10 * pow(speed, 2) body_anchor.velocity = linear_velocity body_anchor.move_and_slide()