Menu
CoddyTech

الفرملة والجر

الدرس 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
challenge icon

التحدي

سهل
  1. أضف @export var drag := 0.6.
  2. اقرأ قيمة دواسة الوقود باستخدام get_axis كما سبق.
  3. استبدل السطر الذي يزيد السرعة المتجهة ببنية if وelse.
  4. طبّق مقاومة الهواء قبل 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