Движение платформы через Trigger
Добавлено: 28 янв 2020, 14:07
Всем привет!
Хочу реализовать движение платформы при проходе игрока через триггер.
Использую такой скрипт для движения платформы из точки А в точку Б.
"onAction" изменяется в скрипте триггера на true.
Пробовал добавлять в скрипт триггера что-то вроде:
Но если платформ на сцене больше чем одна, то едут все одновременно.
Вроде как можно через GameObject, но не соображу как. Подскажите пожалуйста?
Хочу реализовать движение платформы при проходе игрока через триггер.
Использую такой скрипт для движения платформы из точки А в точку Б.
"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, но не соображу как. Подскажите пожалуйста?