@TheReyes001

Почему персонаж не ходит в юнити 2д?

вот и сам код
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
public float jumpForce = 10f;
public float speed = 5f;
public float fallMultiplier = 2.5f;
public float lowJumpMultiplier = 2f;
public Transform groundCheck;
public float groundDistance = 0.4f;
public LayerMask groundMask;
private Animator animator;
private float moveInput;

private Rigidbody2D rb;
private bool isGrounded;
private bool facingRight = true;

void Start()
{
rb = GetComponent();

void Update()
{
FixedUpdate();
Update();
Dash();
}

void FixedUpdate()
{
isGrounded = Physics2D.OverlapCircle(groundCheck.position, groundDistance, groundMask);

if (isGrounded && Input.GetButtonDown("Jump"))
{
rb.velocity = new Vector2(rb.velocity.x, jumpForce);
}

if (rb.velocity.y < 0)
{
rb.velocity += Vector2.up * Physics2D.gravity.y * (fallMultiplier - 1) * Time.deltaTime;
}
else if (rb.velocity.y > 0 && !Input.GetButton("Jump"))
{
rb.velocity += Vector2.up * Physics2D.gravity.y * (lowJumpMultiplier - 1) * Time.deltaTime;
}
{
moveInput = Input.GetAxis("Horizontal");
rb.velocity = new Vector2(moveInput * speed, rb.velocity.y);
if (facingRight == false && moveInput > 0)
{
Flip();
}
else if (facingRight == true && moveInput < 0)
{
Flip();
}
}
void Flip()
{
facingRight = !facingRight;
Vector3 Scaler = transform.localScale;
Scaler.x *= -1;
transform.localScale = Scaler;
}
}
}

public float health = 100f;

public void TakeDamage(float damage)
{
health -= damage;

if (health <= 0)
{
Die();
}
}


void Die()
{
// Здесь вы можете добавить код для обработки смерти игрока
// Например, можно показать экран "Game Over" и перезапустить уровень.

Destroy(gameObject); // Удаляем игрока из сцены
}
public int DashInpulse = 5000;

void Dash()
{
if (Input.GetKeyDown(KeyCode.LeftControl))
{


animator.Play("Dash");

rb.velocity = new Vector2(0, 0);

if (rb.transform.localScale.x < 0)
{
rb.AddForce(Vector2.left * DashInpulse);
}
else
{
rb.AddForce(Vector2.right * DashInpulse);
}
}
}
}
  • Вопрос задан
  • 113 просмотров
Пригласить эксперта
Ответы на вопрос 1
@always_drunkking
У тебя поле rb не инициализировано никак. rb = GetComponent<RigidBody2d>()сделай. Фигурная скобка Start метода не закрыта. Из метода Update все методы снеси, зачем тебе вызов Dash каждый кадр ? Dash у тебя не делает ничего вовсе. И весь свой код оберни в вопросе чтобы он корректно отображался
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы