@yraiv

Почему скрипт работает не коректно?

Есть пустой объект с 2д колайдером и rigibody2d+ на нем висит скрипт, который по нажатию должен перемещать персонажа в указанную точку( точку задаю из инспектора). Я сделал копию объекта и перенес его правее первого. Назначил другие в нем координаты и думал, что он перенесёт туда персонажа по клику, но что-то пошло не так. Персонаж перебрасывается лишь тогда, когда отклчаю первый объект. Если второй объект выключить, то первый работает, если выключить первый, то работает второй. Колайдеры не пересекаются, все нормально вроде, что может быть?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TeleportPlayer : MonoBehaviour
{
    Rigidbody2D rb;
    public GameObject PlayerRB;
    public float PozX;
    public float PozY;

    public void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    void Update()
    {
        if (Input.GetMouseButton(0))
        {       
            Debug.Log("Нажатие на колайдер башни");
            PlayerRB.transform.localPosition = new Vector2(PozX, PozY);
            Debug.Log("Совершено перемещение персонажа к башне");
        }
    }

    
}
  • Вопрос задан
  • 43 просмотра
Решения вопроса 2
freeExec
@freeExec
Участник OpenStreetMap
У вас проблема в коде Update. Они у вас оба работают, и оба перемещают, только видите вы перемещения для того, кто переместил его последним.
Надо не Input.GetMouseButton, а Reycast пускать под курсором и смотреть в какой объект он попадёт. И уже запускать код телепортации в этом объекте.
Ответ написан
mopsicus
@mopsicus
Условие в апдейте выполнится у обоих скриптов при нажатии
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы