This commit is contained in:
Aiksi 2023-09-06 08:54:43 +03:00
parent b19ae6be25
commit 15cae7fb8e
2 changed files with 21 additions and 49 deletions

View File

@ -8,42 +8,36 @@ extends RigidBody3D
@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
DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_FULLSCREEN)
func _physics_process(delta):
if global_position.length() >= 100:
print("a")
print("ball escaped")
queue_free()
# Visual
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)
mesh.look_at(collision_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
var scalexy = clamp(sqrt(1 / mesh.scale.z), 0.0, 2.0)
mesh.scale.x = scalexy
mesh.scale.y = scalexy
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()
# Physics
body_anchor.velocity = (global_position - body_anchor.global_position).normalized() * speed
if not body_anchor.move_and_slide():
body_anchor.global_position = global_position
constant_force = gravity + (body_anchor.global_position - global_position) * stiffness * pow(speed, 2)
linear_velocity = linear_velocity.normalized() * clamp(linear_velocity.length(), 0, speed)

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=11 format=3 uid="uid://dd1e3u5cyy3mk"]
[gd_scene load_steps=7 format=3 uid="uid://dd1e3u5cyy3mk"]
[ext_resource type="Material" uid="uid://ccktnp41cys0r" path="res://Ball/Meshes/ball_material.tres" id="1_5n3i6"]
[ext_resource type="Script" path="res://Ball/ball_test.gd" id="1_s3xmr"]
@ -12,28 +12,17 @@ radius = 0.1
[sub_resource type="SphereShape3D" id="SphereShape3D_dwt7q"]
[sub_resource type="BoxMesh" id="BoxMesh_1auv0"]
[sub_resource type="SphereMesh" id="SphereMesh_xquva"]
radius = 0.2
height = 0.4
[sub_resource type="SphereMesh" id="SphereMesh_bnhf3"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5h0ki"]
transparency = 1
albedo_color = Color(1, 0.372549, 1, 0.701961)
[node name="BallBase" type="RigidBody3D" groups=["balls"]]
collision_layer = 0
collision_mask = 0
gravity_scale = 0.0
continuous_cd = true
lock_rotation = true
linear_damp_mode = 1
angular_damp_mode = 1
script = ExtResource("1_s3xmr")
speed = 10.0
gravity = Vector3(0, -10, 0)
stiffness = 10.0
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("SphereShape3D_jblqj")
@ -54,19 +43,8 @@ shape = SubResource("SphereShape3D_862wy")
top_level = true
collision_layer = 8
collision_mask = 9
motion_mode = 1
wall_min_slide_angle = 0.0
[node name="CollisionShape3D" type="CollisionShape3D" parent="AnchorBody"]
shape = SubResource("SphereShape3D_dwt7q")
[node name="MeshInstance3D" type="MeshInstance3D" parent="AnchorBody"]
visible = false
mesh = SubResource("BoxMesh_1auv0")
[node name="TestMesh" type="MeshInstance3D" parent="."]
visible = false
mesh = SubResource("SphereMesh_xquva")
[node name="TestMesh2" type="MeshInstance3D" parent="."]
visible = false
mesh = SubResource("SphereMesh_bnhf3")
surface_material_override/0 = SubResource("StandardMaterial3D_5h0ki")