Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите со скриптом. Unity C# (Си шарп)

Легуш Знаток (259), на голосовании 1 месяц назад
Помогите сделать скрипт. Который заставляет объект падать когда под ним находится игрок и застывает в воздухе когда сталкивается с определенным тригером.
Голосование за лучший ответ
Егор Леонидов Мастер (1919) 2 месяца назад
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.
ЛегушЗнаток (259) 2 месяца назад
Не работает
Давид Тер-Маркарян Знаток (335) 2 месяца назад
Мы можешь в настройках проекта выключить флажки пересечения триггеров между игроками, то есть тегами игрока
Чёрный Император акчоТ Ученик (182) 2 месяца назад
Конечно, вот более простой и понятный пример скрипта в 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;
}
}
}
```

Просто создайте пустой объект в сцене, перетащите этот скрипт на объект и назначьте игрока и объект-триггер в соответствующие поля. Когда объект столкнется с объект-триггером, он остановится в воздухе.

Надеюсь, это поможет вам реализовать желаемое поведение. Если у вас возникнут дополнительные вопросы, пожалуйста, сообщите.
Похожие вопросы