8000 GitHub - Kuptsevych/Unity-DOTS-TriggerSystem: Trigger-Detector system made for Unity3D DOTS
[go: up one dir, main page]

Skip to content

Kuptsevych/Unity-DOTS-TriggerSystem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Unity-DOTS-TriggerSystem

Core idea

How to use

See the examples in the project

Step 1

Create an effect component

public struct SimpleTriggerEffect : IComponentData
{
	public Color Color;
	public bool  Used;
}

Step 2

Register the component in the system (See AddTriggerEffectsSystem ComponentSystem)

	_triggerDetectorSystem.Conversion.Add(typeof(SimpleTriggerEffect), EcsUtils.CopyComponent<SimpleTriggerEffect>);

Step 3

Create a prefab with conversion for the trigger

public class SimpleTriggerAuthoring : MonoBehaviour, IConvertGameObjectToEntity
{
	public Color Color;

	public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
	{
		conversionSystem.AddHybridComponent(GetComponent<SpriteRenderer>());
		conversionSystem.AddHybridComponent(GetComponent<Transform>());
		conversionSystem.AddHybridComponent(GetComponent<Rigidbody2D>());
		conversionSystem.AddHybridComponent(GetComponent<BoxCollider2D>());

		dstManager.AddComponent<TriggerComponent>(entity);
		dstManager.AddComponent<Enabled>(entity);
		dstManager.AddComponent<SimpleTriggerEffect>(entity);

		dstManager.SetComponentData(entity, new SimpleTriggerEffect
		{
			Color = Color
		});
	}
}

Step 4

Create a prefab with conversion for the detector

public class SimpleDetectorAuthoring : MonoBehaviour, IConvertGameObjectToEntity
{
	public void Convert(Entity entity, EntityManager dstManager, GameObjectConversionSystem conversionSystem)
	{
		conversionSystem.AddHybridComponent(GetComponent<SpriteRenderer>());
		conversionSystem.AddHybridComponent(GetComponent<Transform>());
		conversionSystem.AddHybridComponent(GetComponent<Rigidbody2D>());
		conversionSystem.AddHybridComponent(GetComponent<BoxCollider2D>());

		dstManager.AddComponent<DetectorComponent>(entity);
		dstManager.AddComponent<InputComponent>(entity);
		dstManager.AddComponent<SimpleDetectorTag>(entity);
		dstManager.AddComponent<Enabled>(entity);
		dstManager.AddComponent<CopyTransformFromGameObject>(entity);
	}
}

Step 5

Create system with custom game logic

public class SimpleTriggerEffectSystem : SystemBase
{
	protected override void OnUpdate()
	{
		Entities.WithoutBurst().WithAll<DetectorComponent>().ForEach(
			(Entity e, int entityInQueryIndex, ref SimpleTriggerEffect triggerEffect, in SpriteRenderer spriteRenderer) =>
			{
				if (!triggerEffect.Used)
				{
					triggerEffect.Used   = true;
					spriteRenderer.color = triggerEffect.Color;
				}
			}).Run();
	}
}

Used assets

https://assetstore.unity.com/packages/2d/characters/tiny-rpg-forest-114685 https://www.1001fonts.com/arcadeclassic-font.html

About

Trigger-Detector system made for Unity3D DOTS

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
0