-
I couldn’t find Physics Shape. I think it was removed in 1.0.16? So I added a Sphere Collider to the GameObject.
-
I wrote the script below.
using System.Collections;
using System.Collections.Generic;
using Unity.Entities;
using Unity.Physics;
using Unity.Physics.Systems;
using UnityEngine;
namespace Binggrae.CollisionSystem
{
[UpdateInGroup(typeof(FixedStepSimulationSystemGroup))]
[UpdateBefore(typeof(PhysicsSimulationGroup))]
public partial struct CollisionSystem : ISystem
{
BufferLookup<CollisionBuffer> m_BufferLookup;
public void OnCreate(ref SystemState state)
{
m_BufferLookup = state.GetBufferLookup<CollisionBuffer>(false);
}
public void OnUpdate(ref SystemState state)
{
var simulationSingleton = SystemAPI.GetSingleton<SimulationSingleton>();
m_BufferLookup.Update(ref state);
var colJobHandle = new CollisionJob
{
// ECB = ecb,
collisionBuffers = m_BufferLookup
}.Schedule(simulationSingleton, state.Dependency);
colJobHandle.Complete();
}
private struct CollisionJob : ICollisionEventsJob
{
//public EntityCommandBuffer ECB;
public BufferLookup<CollisionBuffer> collisionBuffers;
public void Execute(CollisionEvent collisionEvent)
{
Debug.Log("Execute");
if (collisionBuffers.HasBuffer(collisionEvent.EntityA))
{
collisionBuffers[collisionEvent.EntityA].Add(new CollisionBuffer()
{
entity = collisionEvent.EntityB
});
}
if (collisionBuffers.HasBuffer(collisionEvent.EntityB))
{
collisionBuffers[collisionEvent.EntityB].Add(new CollisionBuffer()
{
entity = collisionEvent.EntityA
});
}
}
}
}
}
- Debug.Log(“Execute”); is not called.
Since it is colliding with the collider on the floor, Debug.log should be output. CollisionEvent is not being added to Entity even when Collider collides.