@Timur975787

Не работает скрипт, в чем проблема?

Есть у меня скрипт, этот скрипт отвечает за ходьбу игрока. Появилась проблема, скрипт частично не работает. При касании скрипт должен выводить надпись и двигать игрока, но он только выводит надпись. Вот сам скрипт:

using UnityEngine;
using UnityEngine.UI;

public class Walk : MonoBehaviour
{
    private Animator player;
    public float speddZ;
    private Rigidbody rb;
    public Finich fenich;
    private float deltaPosX;
    public Text text;

    void Start()
    {
        player = gameObject.GetComponent<Animator>();
        rb = gameObject.GetComponent<Rigidbody>();
    }
    void Update()
    {
      if (fenich.win == false) 
      {
           
            if (Input.touchCount == 1)
            {
                text.text = "Touch";
                deltaPosX = Input.GetTouch(1).deltaPosition.x;
                rb.velocity = new Vector3(-deltaPosX * Time.deltaTime * 100, 0, speddZ * Time.deltaTime);
                player.Play("Walking");
            }
            else 
            { 
            rb.velocity = new Vector3(0, 0, speddZ * Time.deltaTime);
            player.Play("Walking");
      }     }
    }
}
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
У тебя в коде есть вот такие строчки:
rb.velocity = new Vector2(-deltaPosX * Time.deltaTime * 100, 0);
rb.velocity = new Vector3(0, 0, speddZ * Time.deltaTime);

Так что проблема может быть в них:
1. Ты в пределах одного кадра дважды меняешь скорость - по факту первая строка даже не будет отрабатывать
А вторая строка будет уводить персонажа вдоль оси forward/backward (z), что достаточно странно для 2д игры.
2. Если пальцем не двигать, то скорость будет 0, тк ты берёшь deltaPosition
3. Скорость зачем-то привязана ко времени кадра. Чем выше будет fps, тем медленнее будет двигаться персонаж.
(может вместо скорости ты хотел менять ускорение / импульс?)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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