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