mirror of
https://github.com/jcreek/CosmicClash.git
synced 2026-07-12 18:43:49 +00:00
fix(*): Ensure that movement vaguely works in the new area and looks vaguely at the ball
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
[gd_scene load_steps=3 format=3 uid="uid://27u3tdc5yqnl"]
|
||||
|
||||
[ext_resource type="ArrayMesh" uid="uid://ucw1lyo43yi4" path="res://assets/models/gold_ball.res" id="1_ct1s3"]
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_c5p07"]
|
||||
|
||||
[node name="Ball" type="RigidBody3D"]
|
||||
mass = 100.0
|
||||
inertia = Vector3(100, 100, 100)
|
||||
metadata/_edit_group_ = true
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("SphereShape3D_c5p07")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 2.08165e-12, 2.08165e-12, 2.08165e-12)
|
||||
mesh = ExtResource("1_ct1s3")
|
||||
@@ -0,0 +1,23 @@
|
||||
[gd_scene load_steps=4 format=3 uid="uid://p07epxnh8wwp"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dyq1n7q1bqjps" path="res://scripts/ship.gd" id="1_efag7"]
|
||||
|
||||
[sub_resource type="BoxMesh" id="BoxMesh_efag7"]
|
||||
size = Vector3(1, 1, 4)
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_dsjou"]
|
||||
size = Vector3(1, 1, 4)
|
||||
|
||||
[node name="Ship" type="RigidBody3D"]
|
||||
mass = 10.0
|
||||
gravity_scale = 10.0
|
||||
script = ExtResource("1_efag7")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="."]
|
||||
mesh = SubResource("BoxMesh_efag7")
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
|
||||
shape = SubResource("BoxShape3D_dsjou")
|
||||
|
||||
[node name="Camera3D" type="Camera3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 0.867366, 0.497671, 0, -0.497671, 0.867366, 0, 2.04336, 3.31556)
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=5 format=3 uid="uid://dnra1buk328d"]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/Vehicle.gd" id="1_5snef"]
|
||||
[ext_resource type="Script" uid="uid://byy2mu4mxdlgl" path="res://scripts/Vehicle.gd" id="1_5snef"]
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_0otfk"]
|
||||
size = Vector3(0.5, 0.5, 1)
|
||||
|
||||
@@ -67,3 +67,7 @@ turbo={
|
||||
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194325,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
|
||||
]
|
||||
}
|
||||
|
||||
[physics]
|
||||
|
||||
3d/physics_engine="Jolt Physics"
|
||||
|
||||
+16
-11
File diff suppressed because one or more lines are too long
+5
-20
@@ -1,7 +1,7 @@
|
||||
[gd_scene load_steps=14 format=3 uid="uid://djlfte5nx8sel"]
|
||||
[gd_scene load_steps=13 format=3 uid="uid://djlfte5nx8sel"]
|
||||
|
||||
[ext_resource type="PackedScene" uid="uid://dnra1buk328d" path="res://objects/vehicle.tscn" id="2_2d4ji"]
|
||||
[ext_resource type="ArrayMesh" uid="uid://ucw1lyo43yi4" path="res://assets/models/gold_ball.res" id="2_4bpxj"]
|
||||
[ext_resource type="PackedScene" uid="uid://27u3tdc5yqnl" path="res://objects/ball.tscn" id="2_mv342"]
|
||||
[ext_resource type="Script" uid="uid://scnbnslvru0b" path="res://scripts/MatchCamera3D.gd" id="2_n3g6s"]
|
||||
[ext_resource type="PackedScene" uid="uid://cofdcxo5170rs" path="res://objects/goal.tscn" id="3_xk008"]
|
||||
[ext_resource type="Script" uid="uid://cprbkhe46c1be" path="res://scripts/player1.gd" id="4_keuru"]
|
||||
@@ -17,8 +17,6 @@ size = Vector3(10, 0.5, 10)
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_133xi"]
|
||||
size = Vector3(10, 0.5, 10)
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_c5p07"]
|
||||
|
||||
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_t0i0j"]
|
||||
sky_top_color = Color(0.266667, 0.419608, 1, 1)
|
||||
|
||||
@@ -31,13 +29,12 @@ sky = SubResource("Sky_0r58b")
|
||||
|
||||
[node name="MatchNode3D" type="Node3D"]
|
||||
|
||||
[node name="MatchCamera3D" type="Camera3D" parent="." node_paths=PackedStringArray("vehicle", "ball")]
|
||||
[node name="MatchCamera3D" type="Camera3D" parent="." node_paths=PackedStringArray("vehicle")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.08165e-12, 1.33585, 3.3972)
|
||||
current = true
|
||||
fov = 114.877
|
||||
script = ExtResource("2_n3g6s")
|
||||
vehicle = NodePath("../Players/GridContainer/SubViewportContainer/SubViewport/Player1")
|
||||
ball = NodePath("../Ball")
|
||||
|
||||
[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."]
|
||||
transform = Transform3D(0.908048, -0.417905, 0.0283578, 0.372456, 0.836559, 0.401802, -0.191638, -0.354294, 0.915287, 0, 3.7388, 0.115907)
|
||||
@@ -52,18 +49,8 @@ mesh = SubResource("BoxMesh_xotuo")
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Floor"]
|
||||
shape = SubResource("BoxShape3D_133xi")
|
||||
|
||||
[node name="Ball" type="RigidBody3D" parent="."]
|
||||
[node name="Ball" parent="." instance=ExtResource("2_mv342")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.08165e-12, 2, 2.08165e-12)
|
||||
mass = 100.0
|
||||
inertia = Vector3(100, 100, 100)
|
||||
metadata/_edit_group_ = true
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="Ball"]
|
||||
shape = SubResource("SphereShape3D_c5p07")
|
||||
|
||||
[node name="MeshInstance3D" type="MeshInstance3D" parent="Ball"]
|
||||
transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 2.08165e-12, 2.08165e-12, 2.08165e-12)
|
||||
mesh = ExtResource("2_4bpxj")
|
||||
|
||||
[node name="Players" type="Node3D" parent="."]
|
||||
|
||||
@@ -103,10 +90,8 @@ script = ExtResource("4_vutck")
|
||||
|
||||
[node name="Goals" type="Node3D" parent="."]
|
||||
|
||||
[node name="Goal2" parent="Goals" node_paths=PackedStringArray("ball", "player1") instance=ExtResource("3_xk008")]
|
||||
[node name="Goal2" parent="Goals" instance=ExtResource("3_xk008")]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2.08165e-12, 1, -5)
|
||||
ball = NodePath("../../Ball")
|
||||
player1 = NodePath("../../Players/GridContainer/SubViewportContainer/SubViewport/Player1")
|
||||
|
||||
[node name="WorldEnvironment" type="WorldEnvironment" parent="."]
|
||||
environment = SubResource("Environment_ycxte")
|
||||
|
||||
@@ -2,4 +2,4 @@ extends Button
|
||||
|
||||
|
||||
func _on_pressed() -> void:
|
||||
get_tree().change_scene_to_file("res://scenes/Game.tscn")
|
||||
get_tree().change_scene_to_file("res://scenes/game.tscn")
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
class_name Ship
|
||||
extends RigidBody3D
|
||||
|
||||
var speed = 10.0
|
||||
|
||||
@onready var camera : Camera3D = get_node("Camera3D")
|
||||
@onready var ball = get_parent().get_node("Ball")
|
||||
|
||||
func _physics_process(_delta):
|
||||
if ball and camera:
|
||||
# Adjust the offset based on your scene scale
|
||||
# Increasing Y component to raise the camera higher above the vehicle
|
||||
var offset = Vector3(0, 2, -2) # Adjust Y to change height
|
||||
|
||||
# Position the camera behind and above the vehicle
|
||||
var behind_vehicle = global_transform.origin - global_transform.basis.z * offset.z
|
||||
behind_vehicle += global_transform.basis.y * offset.y
|
||||
|
||||
camera.global_transform.origin = behind_vehicle
|
||||
camera.look_at(ball.global_transform.origin, Vector3.UP)
|
||||
|
||||
func _integrate_forces(state):
|
||||
# input_vector represents the movement input relative to the vehicle
|
||||
var input_vector = get_input_vector()
|
||||
|
||||
# Scale the input_vector by speed
|
||||
input_vector = input_vector.normalized() * speed
|
||||
|
||||
# Set the linear velocity based on the input
|
||||
state.linear_velocity = input_vector
|
||||
|
||||
# Rotate the ship to face the movement direction
|
||||
if input_vector.length() > 0.1: # Only rotate if there's significant movement
|
||||
var target_direction = input_vector.normalized()
|
||||
# Create a transform that looks in the target direction
|
||||
var look_transform = Transform3D()
|
||||
look_transform.origin = global_transform.origin
|
||||
look_transform = look_transform.looking_at(global_transform.origin + target_direction, Vector3.UP)
|
||||
|
||||
# Apply the rotation to the ship
|
||||
state.transform.basis = look_transform.basis
|
||||
|
||||
func get_input_vector() -> Vector3:
|
||||
var input_vector = Vector3.ZERO
|
||||
|
||||
if camera:
|
||||
var camera_transform = camera.global_transform
|
||||
var forward_direction = -camera_transform.basis.z
|
||||
var right_direction = camera_transform.basis.x
|
||||
var y_movement = input_vector.y
|
||||
|
||||
if Input.is_action_pressed("move_forward"):
|
||||
input_vector += forward_direction
|
||||
if Input.is_action_pressed("move_backward"):
|
||||
input_vector -= forward_direction
|
||||
if Input.is_action_pressed("move_left"):
|
||||
input_vector -= right_direction
|
||||
if Input.is_action_pressed("move_right"):
|
||||
input_vector += right_direction
|
||||
|
||||
# Zero out the Y component to restrict movement to the XZ plane
|
||||
input_vector.y = 0
|
||||
|
||||
# Add back the preserved Y movement
|
||||
input_vector.y = y_movement
|
||||
|
||||
if Input.is_action_pressed("move_up"):
|
||||
input_vector.y += 1
|
||||
if Input.is_action_pressed("move_down"):
|
||||
input_vector.y -= 1
|
||||
|
||||
return input_vector.normalized()
|
||||
else:
|
||||
print("Camera not found")
|
||||
return Vector3.ZERO
|
||||
@@ -0,0 +1 @@
|
||||
uid://dyq1n7q1bqjps
|
||||
Reference in New Issue
Block a user