Как сделать, чтобы объект двигался на другой объект?

Ссылка скопирована
1 ответ

Я использовал информацию из интернета и написал такой код:

using System.Collections; using System.Collections.Generic; using UnityEngine;  public class boss : MonoBehaviour {     [SerializeField] int bosshealth = 1000;     [SerializeField] GameObject HPshow;     [SerializeField] GameObject tentackles;     [SerializeField] Transform player;     Rigidbody2D rb;          public float speed = 2.5f;     void Start()     {     }     public void Update()     {         StartCoroutine(Time_attack());     }     IEnumerator Time_attack()     {         yield return new WaitForSeconds(11f);         Vector2 target = new Vector2(player.transform.position.x, player.transform.position.y);         Vector2.MoveTowards(tentackles.transform.position, target, speed * Time.fixedDeltaTime);     } }

using System.Collections; using System.Collections.Generic; using UnityEngine; public class boss : MonoBehaviour { [SerializeField] int bosshealth = 1000; [SerializeField] GameObject HPshow; [SerializeField] GameObject tentackles; [SerializeField] Transform player; Rigidbody2D rb; public float speed = 2.5f; void Start() { } public void Update() { StartCoroutine(Time_attack()); } IEnumerator Time_attack() { yield return new WaitForSeconds(11f); Vector2 target = new Vector2(player.transform.position.x, player.transform.position.y); Vector2.MoveTowards(tentackles.transform.position, target, speed * Time.fixedDeltaTime); } }

У меня этот скрипт не работает, хотя я все ссылки заполнил кроме "HPshow".

Дополнительно:

а что ты ждешь 11 секунд?

  • хотя можешь не отвечать. К программированию твои вопросы не имеют никакого отношения. Если бы ты выделил на самообучение хоть половину того времени, которое тратишь на копирование чужого кода без попытки его прочитать, был ты синьором.
  • Kentavr16, каким образом тогда по твоему мнению надо самообучаться?
  • Kentavr16, окончания анимации
  • Kentavr16, и тем более я не говорил что взял код с инета, я изучил как использовать нужные мне функции, но я не пойму почему то что я написал не работает
  • vitek22, то что ты в апдейте запускаешь эту корутину наводит на мысль что ты не очень понимаешь что делается в коде. Если хочешь научиться - ступай на оффсайт юнити, там много замечательных обучающих видео. Или ютуб - там еще больше. Начни с начала, и прогресс появится. Копированием чужого кода ты не развиваешься. Идеальный вариант обучения - используй с умом chatGPT и подобные инструменты.
  • Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Стас DB Ответ

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

    Давайте предположим, что у вас есть два объекта - объект, который вы хотите двигать, и целевой объект, к которому он должен двигаться. Первым делом необходимо определить координаты обоих объектов.

    Пример на языке программирования PHP:

    // Координаты объектов
    $object1_x = 100;
    $object1_y = 100;
     
    $object2_x = 200;
    $object2_y = 200;
     
    // Рассчитываем направление движения
    $dx = $object2_x - $object1_x;
    $dy = $object2_y - $object1_y;
     
    // Нормализуем вектор направления
    $length = sqrt($dx * $dx + $dy * $dy);
    $dx /= $length;
    $dy /= $length;
     
    // Задаем скорость движения объекта
    $speed = 5;
     
    // Двигаем объект
    $object1_x += $dx * $speed;
    $object1_y += $dy * $speed;

    // Координаты объектов $object1_x = 100; $object1_y = 100; $object2_x = 200; $object2_y = 200; // Рассчитываем направление движения $dx = $object2_x - $object1_x; $dy = $object2_y - $object1_y; // Нормализуем вектор направления $length = sqrt($dx * $dx + $dy * $dy); $dx /= $length; $dy /= $length; // Задаем скорость движения объекта $speed = 5; // Двигаем объект $object1_x += $dx * $speed; $object1_y += $dy * $speed;

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

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

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно