Голосование за лучший ответ
Егор Леонидов
Мастер
(1975)
8 месяцев назад
using UnityEngine;
using System.Collections;
public class FallingObject : MonoBehaviour {
public GameObject player;
public GameObject trigger;
private bool isFalling = false;
void Update() {
if (isFalling) {
transform.Translate(Vector3.down * Time.deltaTime * 10);
}
}
void OnTriggerEnter(Collider other) {
if (other.gameObject == player) {
isFalling = true;
}
}
void OnTriggerExit(Collider other) {
if (other.gameObject == trigger) {
isFalling = false;
}
}
}
В этом скрипте мы создаем объект, который падает, когда под ним находится игрок, и застывает в воздухе, когда сталкивается с определенным триггером.
В методе Update мы проверяем, падает ли объект. Если это так, мы перемещаем его вниз на определенную скорость.
Методы OnTriggerEnter и OnTriggerExit вызываются, когда объект входит в контакт с другим объектом или выходит из контакта соответственно. В этих методах мы проверяем, является ли другой объект игроком или триггером, и устанавливаем или сбрасываем флаг isFalling соответственно.
Пожалуйста, убедитесь, что вы правильно настроили триггеры и коллайдеры в вашей сцене, и что у вас есть объекты с компонентами Player и Trigger.
Чёрный Император акчоТ
Ученик
(244)
7 месяцев назад
Конечно, вот более простой и понятный пример скрипта в Unity C#, который делает объект падающим, когда игрок находится под ним, и заставляет его застывать в воздухе при столкновении с триггером:
```csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FallingObject : MonoBehaviour
{
public float fallSpeed = 5f;
public Transform player;
public GameObject freezeTrigger;
void Update()
{
if (transform.position.y > player.position.y)
{
transform.Translate(Vector3.down * fallSpeed * Time.deltaTime);
}
}
private void OnTriggerEnter(Collider other)
{
if (other.gameObject == freezeTrigger)
{
fallSpeed = 0f;
}
}
}
```
Просто создайте пустой объект в сцене, перетащите этот скрипт на объект и назначьте игрока и объект-триггер в соответствующие поля. Когда объект столкнется с объект-триггером, он остановится в воздухе.
Надеюсь, это поможет вам реализовать желаемое поведение. Если у вас возникнут дополнительные вопросы, пожалуйста, сообщите.