Видеоурок: Как использовать Node Trigger для обнаружения изменений в состоянии объекта
Примечание
Для каждого видеоурока вы можете выбрать субтитры на русском, английском и китайском языках.
Внимание
Этот урок подготовлен на версии SDK 2.18. Данные рекомендации неприменимы для более ранних версий.
Node Trigger — это невидимый триггер, который срабатывает при включении/выключении ноды или при изменении ее трансформации.
Код компонента, показанный в этом видео, приведён ниже для вашего удобства:
Trigger.cs
using System.Collections;
using System.Collections.Generic;
using Unigine;
[Component(PropertyGuid = "AUTOGENERATED_GUID")] // <-- this line is generated automatically for a new component
public class Trigger : Component
{
public AssetLink explosion;
void position_event_handler(NodeTrigger trigger)
{
Log.Message("Object position has been changed. New position is: {0}\n\n", trigger.WorldPosition.ToString());
}
void enabled_event_handler(NodeTrigger trigger)
{
SoundSource soundSource = new SoundSource(explosion.Path);
soundSource.WorldPosition = trigger.WorldPosition;
soundSource.MaxDistance = 100.0f;
soundSource.Play();
}
NodeTrigger nodeTrigger;
void Init()
{
// Cast Node to NodeTrigger
nodeTrigger = node as NodeTrigger;
if(nodeTrigger){
// Subscribe for Enabled and Position events to perform actions
// when a node is enabled/disabled or changes its position
nodeTrigger.EventEnabled.Connect(enabled_event_handler);
nodeTrigger.EventPosition.Connect(position_event_handler);
}
}
void Update()
{
// Disable the parent object when it is below the plane z = 2.0f
if(node.Parent.WorldPosition.z < 2.0f)
node.Parent.Enabled = false;
}
}
Чтобы включить визуализатор и отображать сообщения консоли, добавьте следующий код в метод Init() в AppWorldLogic.cpp или в любой подходящий компонент:
Исходный код (C#)
// Enable Visualizer
Visualizer.Enabled = true;
// Display console messages on the screen
Unigine.Console.Onscreen = true;
Последнее обновление:
04.03.2025
Помогите сделать статью лучше
Была ли эта статья полезной?
(или выберите слово/фразу и нажмите Ctrl+Enter