перемещение с помощью 3D-спрайта в Unity не работает

#c# #unity3d #sprite

#c# #unity3d #спрайт

Вопрос:

Я получил все движения, работающие с моим призраком, который был красным шаром, поэтому я создал спрайт (я не уверен, что вы это так называете), я смог его создать, но теперь движение не работает. похоже, что он находится на льду, потому что, когда он пытается повернуть, он идет по диагонали и ускоряется при движении прямо. Я не знаю, почему он это делает, потому что я даже не вкладываю в него силу, чтобы переместить его. (код):

  GameObject.Find("ghosteyes").transform.position = (place   vecmove);
  

Спасибо

Комментарии:

1. эта одна строка кода выглядит нормально. вы можете очень легко выполнить отладку, добавив DEBUG. Везде регистрируются инструкции. вы скоро обнаружите проблему

Ответ №1:

итак, вы можете сделать 3 вещи. сначала получите свое преобразование, затем переместите его с помощью Translate следующим образом:

 private Transform _transform;

private void Start()
{
    //this gets the transform that the script is on and sets it to _transform
    _transform = this.GetComponent<Transform>();
}



private void Update()
{
    float hor = Input.GetAxis("Horizontal");
    float vert = Input.GetAxis("Vertical");

    _transform.Translate(new Vector2(hor, vert));
}
  

или
Добавьте входные данные в позицию для более фиксированного перемещения.

частное преобразование _transform;

 private void Start()
{
    //this gets the transform that the script is on and sets it to _transform
    _transform = this.GetComponent<Transform>();
}



private void Update()
{
    float hor = Input.GetAxis("Horizontal");
    float vert = Input.GetAxis("Vertical");
    

    _transform.position  = new Vector3(hor,vert) * Time.deltaTime; 
}
  

или

создайте жесткое тело на своем проигрывателе. затем поместите этот скрипт на свой проигрыватель. и используйте rigidbody.Переместите положение, чтобы переместить вашего персонажа. например:

    private Rigidbody2D rb;

private void Start()
{
    rb = this.GetComponent<Rigidbody>();
    
}



private void Update()
{
    //This will take in horizontal input like A and D/ arrow left or right.
    float hor = Input.GetAxis("Horizontal");
    rb.MovePosition(transform.position  = new Vector2(hor,0));
}