الفرملة والجر
الدرس 3 من 20 في دورة لعبة Godot: حلبة النيون على Coddy.
اترك زر الأعلى، وستواصل السيارة التدحرج إلى الأبد. هناك شيئان يعالجان ذلك.
تُبطئ مقاومة الهواء السيارة المتحركة قليلًا في كل إطار. أزِل 60 بالمئة من السرعة كل ثانية:
velocity *= 1.0 - drag * deltaوزر الأسفل يضغط على المكابح. اقرأ زري الأعلى والأسفل معًا، بحيث يتراوح الضغط على دواسة التسارع من -1 إلى 1. بينما تواصل السيارة التدحرج إلى الأمام، يدفعها زر الأسفل إلى الخلف بقوة أكبر من دفع المحرك إلى الأمام. وعندما تتوقف، يعكس زر الأسفل اتجاهها:
var throttle := Input.get_axis("move_down", "move_up")
if throttle < 0.0 and speed > 10.0:
velocity += forward * throttle * accel * 1.6 * delta
else:
velocity += forward * throttle * accel * deltaالتحدي
سهل- أضف
@export var drag := 0.6. - اقرأ قيمة دواسة الوقود باستخدام
get_axisكما سبق. - استبدل السطر الذي يزيد السرعة المتجهة ببنية if وelse.
- طبّق مقاومة الهواء قبل
limit_length.
جرّب بنفسك
extends Node2D
@export var accel := 260.0
@export var max_speed := 200.0
@export var turn_speed := 3.2
var velocity := Vector2.ZERO
func _physics_process(delta: float) -> void:
var throttle := Input.get_action_strength("move_up")
var steer := Input.get_axis("move_left", "move_right")
var forward := Vector2.RIGHT.rotated(rotation)
var speed := velocity.dot(forward)
velocity += forward * throttle * accel * delta
rotation += steer * turn_speed * delta * clampf(absf(speed) / 90.0, 0.0, 1.0) * signf(speed + 0.01)
velocity = velocity.limit_length(max_speed)
position += velocity * delta
$Exhaust.emitting = throttle > 0.0
جميع دروس لعبة Godot: حلبة النيون
تدرّب بنفسك: Playground لـ Godot