Понедельник, 30 Декабря 2024, 20:58

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Змейка [Хвост]
tetaДата: Вторник, 12 Июня 2018, 17:53 | Сообщение # 1
был не раз
Сейчас нет на сайте
Код

    public GameObject SnakeBody;
    private int c = 0;
    private int s = 0;
    private int i = 0;
    private List<GameObject> Tail = new List<GameObject>();

    void Start () {
  Tail.Clear ();
  for(int i = 0; i < 3; i++)AddTail();
    }

        //передвижение

    void Update () {
//головы
  i = PlayerPrefs.GetInt ("Click");
  if (i == 0) {
   transform.Translate (Time.deltaTime * PlayerPrefs.GetFloat ("Power"), 0f, 0f);
  } else if (i == 1) {
   transform.Translate (0f, Time.deltaTime * PlayerPrefs.GetFloat ("Power"), 0f);
  } else if (i == 2) {
   transform.Translate (-Time.deltaTime * PlayerPrefs.GetFloat ("Power"), 0f, 0f);
  } else if (i == 3) {
   transform.Translate (0f, -Time.deltaTime * PlayerPrefs.GetFloat ("Power"), 0f);
  } else if (i == -1) {
   transform.Translate (0f, 0f, 0f);
  }
//выз.хвост
  SnakeTailMove ();
    }

//передвижение хвоста
    public void SnakeTailMove(){
  if (Tail.Count > 0) {
   Tail [0].transform.position = this.transform.position;

   for (int i = Tail.Count - 1; i > 0; i--) {
    Tail [i].transform.position = Tail [i - 1].transform.position;

   }
  }
    }

//добавление хвоста
    public void AddTail(){
  Vector3 Position = transform.position;

  if (Tail.Count > 0) {
   Position = Tail [Tail.Count - 1].transform.position;
  }

  GameObject Body = Instantiate (SnakeBody, Position, Quaternion.identity) as GameObject;

  Tail.Add (Body);
    }

Моя проблема в том, что у меня при движение - все части хвоста на голове. Как сделать так, что бы это как бы был хвост?
Темный квадрат - хвост. Белая голова - голова.


Когда узнал?

Сообщение отредактировал teta - Вторник, 12 Июня 2018, 17:53
DQUODwyPOДата: Вторник, 12 Июня 2018, 18:17 | Сообщение # 2
частый гость
Сейчас нет на сайте
teta, у меня картинка не отображается.
Код
public void AddTail(){
  Vector3 Position = transform.position;

  if (Tail.Count > 0) {
   Position = Tail [Tail.Count - 1].transform.position;
  }

  GameObject Body = Instantiate (SnakeBody, Position, Quaternion.identity) as GameObject;

  Tail.Add (Body);
    }

Так вот у тебя написаны координаты хвоста. Если ты даешь им координаты головы и говоришь появляться там. Непонятно, как они двигаться должны в таком случае.
Я, конечно, новичок в Unity. Думаю, здесь еще нужно учитывать поворот головы и от нее скакать к каждой части.

Добавил. Что делает переменная Tail.Count? Где она объявлена?


Сообщение отредактировал DQUODwyPO - Вторник, 12 Июня 2018, 18:19
tetaДата: Вторник, 12 Июня 2018, 18:32 | Сообщение # 3
был не раз
Сейчас нет на сайте
DQUODwyPO, Tail.Count - кол-во объектов в списке Tail. Объявлена в "private List<GameObject> Tail = new List<GameObject>();"
И извините, что выше не написал. Я знаю, что я указал координаты головы и я пытался передать значение добавляя еще дистанцию и у меня то ли ошибка, то ли не возможно.


Когда узнал?

Сообщение отредактировал teta - Вторник, 12 Июня 2018, 18:32
DQUODwyPOДата: Вторник, 12 Июня 2018, 19:21 | Сообщение # 4
частый гость
Сейчас нет на сайте
teta, я полистал в интернете. Думаю надо сделать так. Если у тебя голова по-умолчанию смотрит вверх, то берешь вектор, координаты которого указывают на его хвост, пусть это будет (0,-1,0). Когда у тебя голова поворачивается, тебе надо использовать функцию поворота вектора (вообще функция должна всегда вызываться получается). Здесь вроде есть решение. Ну а расчет следующей части хвоста берется относительно предыдущей части. Хотя не уверен, что в примере это будет выглядеть идеально. Скорее всего это будет прямая линия которая поворачивается синхронно.

Добавил. Если смотреть, голова поворачивается в определенном месте. И часть хвоста должна поворачиваться только в этой точке, когда достигнет ее.

Добавлено (12 Июня 2018, 19:21)
---------------------------------------------
Ну вот хвост получилось пока пришить. А вот чтобы он нормально двигался ( с поворотами) пока нет.



Сообщение отредактировал DQUODwyPO - Вторник, 12 Июня 2018, 18:46
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг