#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));
}