add burnout particles

This commit is contained in:
interfisch 2024-11-11 18:18:47 +01:00
parent cb2a440172
commit bf19c6989c
4 changed files with 67 additions and 10 deletions

29
scenes/burnout.tscn Normal file
View file

@ -0,0 +1,29 @@
[gd_scene load_steps=3 format=3 uid="uid://dilif5od0ipli"]
[sub_resource type="Curve" id="Curve_sh5h6"]
_data = [Vector2(0, 0.10989), 0.0, 0.944297, 0, 0, Vector2(1, 1), 0.56508, 0.0, 0, 0]
point_count = 2
[sub_resource type="Gradient" id="Gradient_65fx1"]
colors = PackedColorArray(0, 0, 0, 1, 0, 0, 0, 0)
[node name="CPUParticles2D" type="CPUParticles2D"]
z_index = 9
position = Vector2(-11, -7)
emitting = false
amount = 100
lifetime = 2.0
emission_shape = 1
emission_sphere_radius = 1.0
direction = Vector2(-1, 0)
spread = 10.0
gravity = Vector2(0, 0)
initial_velocity_min = 100.0
initial_velocity_max = 150.0
damping_min = 100.0
damping_max = 500.0
scale_amount_min = 10.0
scale_amount_max = 10.0
scale_amount_curve = SubResource("Curve_sh5h6")
color = Color(0.0901961, 0.0901961, 0.0901961, 0.454902)
color_ramp = SubResource("Gradient_65fx1")

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=49 format=3 uid="uid://0g7qqh7naniv"]
[gd_scene load_steps=50 format=3 uid="uid://0g7qqh7naniv"]
[ext_resource type="Script" path="res://scripts/car_node.gd" id="1_0tin3"]
[ext_resource type="Script" path="res://scripts/car.gd" id="1_i5tet"]
@ -6,6 +6,7 @@
[ext_resource type="Texture2D" uid="uid://e5aeyl47wi8p" path="res://sprites/car_body.png" id="4_lps13"]
[ext_resource type="Script" path="res://scripts/tiretrails.gd" id="5_4geqi"]
[ext_resource type="Script" path="res://scripts/label_round.gd" id="5_vheit"]
[ext_resource type="PackedScene" uid="uid://dilif5od0ipli" path="res://scenes/burnout.tscn" id="6_nxxrr"]
[ext_resource type="PackedScene" uid="uid://dl7r8s5sxyvlw" path="res://scenes/enginesound.tscn" id="6_v21se"]
[ext_resource type="AudioStream" uid="uid://dq5rei2w1isu4" path="res://sounds/crash/Car_Crash_01.mp3" id="7_7erwn"]
[ext_resource type="AudioStream" uid="uid://c80nrd7syf2do" path="res://sounds/crash/Car_Crash_02.mp3" id="8_v77t5"]
@ -161,6 +162,11 @@ script = ExtResource("5_4geqi")
position = Vector2(10, 7)
script = ExtResource("5_4geqi")
[node name="Burnout_Left" parent="CharacterBody_Car" instance=ExtResource("6_nxxrr")]
[node name="Burnout_Right" parent="CharacterBody_Car" instance=ExtResource("6_nxxrr")]
position = Vector2(-11, 7)
[node name="Line2D" type="Line2D" parent="CharacterBody_Car"]
width_curve = SubResource("Curve_qs34t")

View file

@ -52,6 +52,9 @@ var resetcar_movingspeed=resetcar_stoppedspeed+10 #stop timer when above this sp
var resetcar_distance=128 #196 is roughly when car is in the middle of a two wide road
var resetcar_steerangle=120
#Effects
const BURNOUT_KEEP_ON_AFTER_START=1
#Variables
var running=false
@ -63,6 +66,9 @@ var autoreset=false
var autosteer_enabled=false
var burnout:float=0 #at 0 is off
@onready var ray_cast_fl: RayCast2D = $RayCast_FL
@onready var ray_cast_fr: RayCast2D = $RayCast_FR
@onready var reset_timer: Timer = $resetTimer
@ -93,6 +99,14 @@ func _physics_process(delta: float) -> void:
velocity +=acceleration*delta
#velocity = transform.x * 200
#vel = move_and_slide()
if burnout>0:
$Burnout_Left.emitting=true
$Burnout_Right.emitting=true
else:
$Burnout_Left.emitting=false
$Burnout_Right.emitting=false
move_and_slide()
for i in get_slide_collision_count():
@ -117,9 +131,12 @@ func _physics_process(delta: float) -> void:
if velocity.length() > resetcar_movingspeed:
reset_timer.stop()
enginesound.setCarSpeed(velocity.length())
enginesound.setCarAcceleration(applied_engine_power/engine_power,delta)
if running:
enginesound.setCarSpeed(velocity.length())
enginesound.setCarAcceleration(applied_engine_power/engine_power,delta)
else: #at start or end of round
enginesound.setCarSpeed(burnout*500)
enginesound.setCarAcceleration(1.0,delta)
#print("Car Accel="+str(acceleration.length()) +"/"+str(engine_power))
@ -171,8 +188,10 @@ func get_input(delta:float):
applied_engine_power=0
if running:
if Input.is_action_pressed(Gamestate.userinput_prefix+str(playerid)):
var key_accelerator_pressed=Input.is_action_pressed(Gamestate.userinput_prefix+str(playerid))
if key_accelerator_pressed:
if running:
#velocity = transform.x * 500
applied_engine_power=engine_power
@ -182,10 +201,13 @@ func get_input(delta:float):
collision_enable_timer.start()
if autoreset:
print("Cancel autoreset")
autoreset=false
#if Input.is_action_pressed("ui_down"):
#acceleration = transform.x * braking
if not running and finalTime==-1 and key_accelerator_pressed: #at start
burnout=min(1.0,burnout+1.0*delta)
else:
burnout=max(0,burnout-1.0/BURNOUT_KEEP_ON_AFTER_START*delta)
acceleration = transform.x * applied_engine_power

View file

@ -38,6 +38,6 @@ func setSliding(psliding:bool):
curve.add_point(Vector2(1,0),-5,0,Curve.TANGENT_FREE,Curve.TANGENT_FREE)
currentTrail.width_curve=curve
currentTrail.set_as_top_level(true)
currentTrail.z_index=9 #above road, behind car
currentTrail.z_index=8 #above road, behind car
isSliding=psliding