Unity_lab3/Unity3_lab/Assets/Scripts/MovingPlatform.cs
2025-11-11 23:10:37 +03:00

53 lines
2.0 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using UnityEngine;
[RequireComponent(typeof(Rigidbody))] // Убедимся, что Rigidbody всегда есть
public class MovingPlatform : MonoBehaviour
{
[Header("Настройки Платформы")]
public Vector3 startPoint; // Начальная точка (будет установлена автоматически)
public Vector3 endPoint; // Конечная точка, куда платформа будет двигаться
[SerializeField] private float speed = 2f; // Скорость движения
private Rigidbody rb;
private bool movingToEnd = true;
void Awake()
{
rb = GetComponent<Rigidbody>();
// Киннематический Rigidbody - лучший способ двигать платформы для физики
rb.isKinematic = true;
rb.useGravity = false;
}
void Start()
{
// Устанавливаем текущую позицию как начальную точку
// Используем rb.position для работы с Rigidbody
startPoint = rb.position;
}
void FixedUpdate()
{
MovePlatform();
}
private void MovePlatform()
{
// Определяем целевую позицию
Vector3 target = movingToEnd ? endPoint : startPoint;
// Перемещаем платформу к целевой точке с заданной скоростью
// Используем rb.MovePosition() для корректного физического перемещения
Vector3 newPosition = Vector3.MoveTowards(rb.position, target, speed * Time.fixedDeltaTime);
rb.MovePosition(newPosition);
// Проверяем, достигли ли мы цели
// (Используем rb.position)
if (rb.position == target)
{
// Меняем направление движения
movingToEnd = !movingToEnd;
}
}
}