Хочу реализовать движение платформы при проходе игрока через триггер.
Использую такой скрипт для движения платформы из точки А в точку Б.
"onAction" изменяется в скрипте триггера на true.
Пробовал добавлять в скрипт триггера что-то вроде:
Синтаксис:
Используется csharp
void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.tag == "Player")
{
GameObject.Find("Platform").GetComponent<ActionMove>().onAction = true;
}
}
{
if (collision.gameObject.tag == "Player")
{
GameObject.Find("Platform").GetComponent<ActionMove>().onAction = true;
}
}
Но если платформ на сцене больше чем одна, то едут все одновременно.
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ActionMove : MonoBehaviour
{
[SerializeField] Vector2 startPosition;
[SerializeField] Vector2 endPosition;
[SerializeField] float moveSpeed;
[Range(0,1)] public float moveProgress;
public bool onAction = false;
void Start()
{
transform.position = startPosition;
}
public void Update()
{
if (onAction == true && moveProgress < 1)
{
moveProgress += moveSpeed * Time.time;
transform.position = Vector2.Lerp(startPosition, endPosition, moveProgress);
}
if (moveProgress >= 1)
{
onAction = false;
}
}
using System.Collections.Generic;
using UnityEngine;
public class ActionMove : MonoBehaviour
{
[SerializeField] Vector2 startPosition;
[SerializeField] Vector2 endPosition;
[SerializeField] float moveSpeed;
[Range(0,1)] public float moveProgress;
public bool onAction = false;
void Start()
{
transform.position = startPosition;
}
public void Update()
{
if (onAction == true && moveProgress < 1)
{
moveProgress += moveSpeed * Time.time;
transform.position = Vector2.Lerp(startPosition, endPosition, moveProgress);
}
if (moveProgress >= 1)
{
onAction = false;
}
}
Вроде как можно через GameObject, но не соображу как. Подскажите пожалуйста?