для тех кто не хочет ждать: func move_player(): velocity = Vector2(Input.get_axis("left", "right"), Input.get_axis("up", "down")).normalized() * speed move_and_slide()
слушай не знаешь как сделать чтоб при зажиме (верх,лево) и т.д значение дайрекшн были целыми, а не 0.707107. Или как можно включить анимации? у меня сейчас if direction.y == -1 and direction.x == -1: anim.flip_h = true animplayer.play("run_up_xy") но он не работает
@@m.vizaru7879 можно например округлить значения к ближайшему целому, что-то вроде этого: var direction = Input.get_vector("left", "right", "up", "down") var rounded_direction = Vector2(round(direction.x), round(direction.y)) print("direction:", direction, " rounded_direction:", rounded_direction)
Если вам спрайты добавить надо(ГОДО4): extends CharacterBody2D const SPEED = 300.0 const JUMP_VELOCITY = 300 # Get the gravity from the project settings to be synced with RigidBody nodes. var gravity = ProjectSettings.get_setting("physics/2d/default_gravity") func _physics_process(delta): velocity = Vector2(Input.get_axis("ui_left", "ui_right"), Input.get_axis("ui_up", "ui_down")).normalized() * SPEED move_and_slide() if Input.is_action_pressed("ui_down"): $AnimatedSprite2D.play("LookDown") if Input.is_action_pressed("ui_up"): $AnimatedSprite2D.play("LookUP") if Input.is_action_pressed("ui_left"): $AnimatedSprite2D.play("LookLeft") if Input.is_action_pressed("ui_right"): $AnimatedSprite2D.play("LookRight")
This has been helpful for me to achieve player mobility in the game, thank you very much. Can I share your video with other websites and attach a link?😀
Привет ! Я новенький и может быть задаю глупый вопрос ) А почему ты старые строки не удалил , как мне понять что срабатывают новые строки а не старые ? Ты ведь заменил грамосткий код на две, три строки.... Разве нет ?)
Если ты обратишь внимание, в самом вверху в методе '_process' ты можешь увидеть что единственный метод который вызывается в данной функции - move_player_3. Как раз таки вся новая реализация и была написана в этом методе move_player_3.
Помогите кто-нибудь! Пж! Мне пишут, что у меня таблутация неверная, а я не знаю, как исправить.extends KinematicBody2D var speed = 150 var jumpForce =300 var gravity = 700 var vel = Vector2() func _physics_process(delta): if Input.is_action_pressed("player_left"): vel.x -= speed elif Input.is_action_pressed("player_left"): vel.x += speed move_and_slide(vel, Vector2.UP)
для тех кто не хочет ждать:
func move_player():
velocity = Vector2(Input.get_axis("left", "right"), Input.get_axis("up", "down")).normalized() * speed
move_and_slide()
Почему перестал, продолжай) сейчас как никогда актуально)
Оживай, чел. Доходчиво объясняешь.
Очень полезно, благодарю!
Только 1 видео? На годот актуальных гайдов очень мало, и все в основном по старой версии. Не забрасывай это дело, если есть что рассказать!
Имба,очень круто
Подписка готова, ждём-с от тебя ещё роликов!
чёткое видео, всё понятно
чел продолжай
Спасибо, работает. Только сейчас чуть-чуть поменялось. Вместо left, теперь пишем vi_left
только начала изучать годо и увидев это я просто в шоке :о
видео по годо 4 будут?
Ещё есть функция get_vector, которая сразу Vector2D возвращает. Можно написать
var direction = Input.get_vector("left", "right", "up", "down")
это лучше?
@@zaka45да
@@zaka45 минимум в два раза
слушай не знаешь как сделать чтоб при зажиме (верх,лево) и т.д значение дайрекшн были целыми, а не 0.707107. Или как можно включить анимации?
у меня сейчас
if direction.y == -1 and direction.x == -1:
anim.flip_h = true
animplayer.play("run_up_xy")
но он не работает
@@m.vizaru7879 можно например округлить значения к ближайшему целому, что-то вроде этого:
var direction = Input.get_vector("left", "right", "up", "down")
var rounded_direction = Vector2(round(direction.x), round(direction.y))
print("direction:", direction, " rounded_direction:", rounded_direction)
var speed = 300
func _process(delta):
pass
var direction: Vector2 = Vector2(Input.get_axis("ui_left","ui_right"),Input.get_axis("ui_up","ui_down")).normalized()
velocity = direction * speed
move_and_slide()
норм
Если вам спрайты добавить надо(ГОДО4):
extends CharacterBody2D
const SPEED = 300.0
const JUMP_VELOCITY = 300
# Get the gravity from the project settings to be synced with RigidBody nodes.
var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
func _physics_process(delta):
velocity = Vector2(Input.get_axis("ui_left", "ui_right"), Input.get_axis("ui_up", "ui_down")).normalized() * SPEED
move_and_slide()
if Input.is_action_pressed("ui_down"):
$AnimatedSprite2D.play("LookDown")
if Input.is_action_pressed("ui_up"):
$AnimatedSprite2D.play("LookUP")
if Input.is_action_pressed("ui_left"):
$AnimatedSprite2D.play("LookLeft")
if Input.is_action_pressed("ui_right"):
$AnimatedSprite2D.play("LookRight")
Что это
Он добавляет проверку на кнопки чтобы проигрывалась анимка@@FANROLL_OFFICIAL
Легче пожалуй сделать скриптом в самом AnimatedSprite
This has been helpful for me to achieve player mobility in the game, thank you very much. Can I share your video with other websites and attach a link?😀
NO
Современное программирование - написать компактно. И буй с ним что тот кто будет после тебя ничего не поймет.
Жду новых видео
Отличное видео! Только жалко, что канал мертв
И почему всего 1 урок по ГОДО, не порядок, братик!
спс
Спасиб
Супер! А как сделать движение в изометрической плоскости в одну строку? Чтобы при нажатии одной кнопки передвигался по диагонали?
У тебя же есть система координат, сложением направлений и назначением на удобные тебе кнопки
Привет ! Я новенький и может быть задаю глупый вопрос )
А почему ты старые строки не удалил , как мне понять что срабатывают новые строки а не старые ?
Ты ведь заменил грамосткий код на две, три строки.... Разве нет ?)
Если ты обратишь внимание, в самом вверху в методе '_process' ты можешь увидеть что единственный метод который вызывается в данной функции - move_player_3.
Как раз таки вся новая реализация и была написана в этом методе move_player_3.
не обманул, рил на 1 строку
Чел воскресни
привет.можешь пожалуйста сказать, что это за язык программировния.
GDScript
кто знает как сделать рванное движение? Чтоб передвигался только по координатам которые на 8 делятся
Помогите кто-нибудь! Пж! Мне пишут, что у меня таблутация неверная, а я не знаю, как исправить.extends KinematicBody2D
var speed = 150
var jumpForce =300
var gravity = 700
var vel = Vector2()
func _physics_process(delta):
if Input.is_action_pressed("player_left"):
vel.x -= speed
elif Input.is_action_pressed("player_left"):
vel.x += speed
move_and_slide(vel, Vector2.UP)
Иногда лучше сделать длиннее, но интуитивно понятнее, чем вспоминать как оно вообще работает.
ну в данном случае используются довольно базовые функции GDScript, кмк
+ что делает условный get_axis() можно и в самом движке посмотреть 🫥
Move_and_slide просто не работает, персонаж просто не двигается
Такая же проблема не подскажешь как решил ее
@@user-mz3ev8be4v к сожалению никак. Попробуй полистать форумы, может что то найдёшь.
Помощь ещё нужна?
@@lidanit0191 не помешала бы :_)
@@sayrikgmd скинь примерный код, который у тебя не работает
Я так делаю
const MOTION_SPEED = 30 # Pixels/second.
const FRICTION_FACTOR = 0.89
func _physics_process(_delta):
var motion = Input.get_vector("move_left", "move_right", "move_up", "move_down")
# Make diagonal movement fit isometric tiles.
motion.y /= 2
velocity += motion.normalized() * MOTION_SPEED
# Apply friction.
velocity *= FRICTION_FACTOR
move_and_slide()
метод get_vector класса Input уже возвращает нормализованный вектор, так что смысла в повторной нормализации - нет