tried adding guide lines

This commit is contained in:
interfisch 2024-12-04 16:30:43 +01:00
parent 7735245b05
commit 82bfc1d184
6 changed files with 115 additions and 46 deletions

View file

@ -28,7 +28,7 @@ window/stretch/mode="canvas_items"
2d_physics/layer_1="walls" 2d_physics/layer_1="walls"
2d_physics/layer_2="walldetection" 2d_physics/layer_2="walldetection"
2d_physics/layer_3="Marking" 2d_physics/layer_3="Marking"
2d_physics/layer_4="Layer 4" 2d_physics/layer_4="roadguide"
[rendering] [rendering]

View file

@ -6,7 +6,7 @@
[ext_resource type="TileSet" uid="uid://carpfxq3rn3aa" path="res://sprites/spritesheet_htrohr/htrohr.tres" id="5_748hi"] [ext_resource type="TileSet" uid="uid://carpfxq3rn3aa" path="res://sprites/spritesheet_htrohr/htrohr.tres" id="5_748hi"]
[ext_resource type="Texture2D" uid="uid://dpuhee0x5ekud" path="res://sprites/background/spritesheet_scenery.png" id="5_lefrm"] [ext_resource type="Texture2D" uid="uid://dpuhee0x5ekud" path="res://sprites/background/spritesheet_scenery.png" id="5_lefrm"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_qbu02"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_fam2n"]
texture = ExtResource("1_8lp8c") texture = ExtResource("1_8lp8c")
texture_region_size = Vector2i(256, 256) texture_region_size = Vector2i(256, 256)
0:0/0 = 0 0:0/0 = 0
@ -44,7 +44,7 @@ texture_region_size = Vector2i(256, 256)
[sub_resource type="TileSet" id="TileSet_5knbn"] [sub_resource type="TileSet" id="TileSet_5knbn"]
tile_size = Vector2i(256, 256) tile_size = Vector2i(256, 256)
sources/1 = SubResource("TileSetAtlasSource_qbu02") sources/1 = SubResource("TileSetAtlasSource_fam2n")
[sub_resource type="RectangleShape2D" id="RectangleShape2D_daqun"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_daqun"]
size = Vector2(23, 317) size = Vector2(23, 317)

File diff suppressed because one or more lines are too long

View file

@ -81,8 +81,7 @@ var burnout:float=0 #at 0 is off
@onready var ray_cast_fl: RayCast2D = $RayCast_FL @onready var ray_cast_fl: RayCast2D = $RayCast_FL
@onready var ray_cast_fr: RayCast2D = $RayCast_FR @onready var ray_cast_fr: RayCast2D = $RayCast_FR
@onready var ray_cast_car_fl: RayCast2D = $RayCast_Car_FL
@onready var ray_cast_car_fr: RayCast2D = $RayCast_Car_FR
@onready var reset_timer: Timer = $resetTimer @onready var reset_timer: Timer = $resetTimer
@ -175,36 +174,43 @@ func get_input(delta:float):
const distance_inf=1000 const distance_inf=1000
var distance_fl=distance_inf var distance_fl=distance_inf
var distance_fr=distance_inf var distance_fr=distance_inf
var distance_guide_l=0
var distance_guide_r=0
if ray_cast_fl.is_colliding(): if ray_cast_fl.is_colliding():
var origin=ray_cast_fl.global_transform.origin var origin=ray_cast_fl.global_transform.origin
var collision_point = ray_cast_fl.get_collision_point() var collision_point = ray_cast_fl.get_collision_point()
distance_fl = origin.distance_to(collision_point) distance_fl = origin.distance_to(collision_point)
var collision_object=ray_cast_fl.get_collider() var collision_object=ray_cast_fl.get_collider()
#if collision_object.name==ROAD_R_NAME: if collision_object.name==ROAD_R_NAME:
distance_fl*=2 #fake distance when wrong side of road
#print("DistanceFL "+str(distance_fl)) #print("DistanceFL "+str(distance_fl))
if ray_cast_fr.is_colliding(): if ray_cast_fr.is_colliding():
var origin=ray_cast_fr.global_transform.origin var origin=ray_cast_fr.global_transform.origin
var collision_point = ray_cast_fr.get_collision_point() var collision_point = ray_cast_fr.get_collision_point()
distance_fr = origin.distance_to(collision_point) distance_fr = origin.distance_to(collision_point)
var collision_object=ray_cast_fr.get_collider()
if collision_object.name==ROAD_L_NAME:
distance_fr*=2 #fake distance when wrong side of road
#print("DistanceFR "+str(distance_fr)) #print("DistanceFR "+str(distance_fr))
var distance_min= min(distance_fl,distance_fr) var distance_min= min(distance_fl,distance_fr)
var turndirection = 1 if distance_fl<distance_fr else -1 var turndirection = 1 if distance_fl<distance_fr else -1
var steering_angle=constrain( remap(velocity.length(),steering_speed_fast,steering_speed_slow,steering_angle_fast,steering_angle_slow),steering_angle_fast,steering_angle_slow) #set maximum steering_angle based on speed var steering_angle=constrain( remap(velocity.length(),steering_speed_fast,steering_speed_slow,steering_angle_fast,steering_angle_slow),steering_angle_fast,steering_angle_slow) #set maximum steering_angle based on speed
var steering_distance_far=constrain( remap(velocity.length(),steering_speed_fast,steering_speed_slow,steering_distance_far_fast,steering_distance_far_slow),steering_distance_far_fast,steering_distance_far_slow) var steering_distance_far=constrain( remap(velocity.length(),steering_speed_fast,steering_speed_slow,steering_distance_far_fast,steering_distance_far_slow),steering_distance_far_fast,steering_distance_far_slow)
var steering_distance_close=constrain( remap(velocity.length(),steering_speed_fast,steering_speed_slow,steering_distance_close_fast,steering_distance_close_slow),steering_distance_close_fast,steering_distance_close_slow) var steering_distance_close=constrain( remap(velocity.length(),steering_speed_fast,steering_speed_slow,steering_distance_close_fast,steering_distance_close_slow),steering_distance_close_fast,steering_distance_close_slow)
steer_direction=0 #0=straight
if autosteer_enabled: if autosteer_enabled:
if distance_min<steering_distance_far: #wall close, start steering away if distance_min<steering_distance_far: #wall close, start steering away
steer_direction = turndirection*deg_to_rad(constrain(remap(distance_min,steering_distance_far,steering_distance_close,0,steering_angle), 0,steering_angle)) steer_direction += turndirection*deg_to_rad(constrain(remap(distance_min,steering_distance_far,steering_distance_close,0,steering_angle), 0,steering_angle))
else:
steer_direction=0 #drive straight
applied_engine_power=0 applied_engine_power=0

View file

@ -0,0 +1,14 @@
extends Line2D
func _ready() -> void:
var staticbody:StaticBody2D=get_child(0)
$".".visible=false
var line_poly=Geometry2D.offset_polyline(points,width/2)
for poly in line_poly:
var col = CollisionPolygon2D.new()
col.polygon=poly
staticbody.add_child(col)