Alokin
@Alokin
Пытаюсь изучить C# и Unity

Написал код движения персонажа, но он не работает, что делать?

Больше часа ломал голову, почему не работает код. Все начиналось с того, что я захотел сделать так, чтобы персонаж поворачивался в сторону движения (игра 2д платформер). В итоге код не работает как бы я не пробовал его исправлять. Помогите пожалуйста

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Player : MonoBehaviour
{

    Rigidbody2D rb;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    void Update()
    {
        if (Input.GetKeyDown (KeyCode.Space) && CanJump())
        {
            jump();
        }
    }

    void FixedUpdate()
    {
        rb.velocity = new Vector2(Input.GetAxis("Horizontal") * 6f, rb.velocity.y);
        if (rb.velocity >= 0) {

            RotateRight();
        }
        else (rb.velocity < 0) {

            RotateLeft();
        }

    }

    void jump()
    {
        rb.AddForce(transform.up * 5f, ForceMode2D.Impulse);
    }

    void RotateLeft()
    {
        if (Input.GetAxis("Horizontal") < 0)
            transform.localRotation = Quaternion.Euler(0, 0, 0)
    }

    void RotateRight()
    {
        if (Input.GetAxis("Horizontal") > 0)
            transform.localRotation = Quaternion.Euler(0, 180, 0)
    }

}
  • Вопрос задан
  • 135 просмотров
Пригласить эксперта
Ответы на вопрос 1
CHIDWI
@CHIDWI
Изучаю C#, Unity3D
Функции CanJump у вас нет, а вы пытаетесь её вызвать, значит, код или не ваш или вы не понимаете, что пишете.
void Update () {
    float v = Input.GetAxis ("Vertical");
		float h = Input.GetAxis ("Horizontal");

		rb.velocity = transform.right * v * 3f;//подходит для игры с видом сверху
		rb.angularVelocity = -h * 100f;
                
                if (Input.GetKeyDown ("space")){
                   rb.Addforce (0, 500);
                }
}
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы