示例#1
0
    protected override void OnUpdate()
    {
        EntityQuery entityQuery = GetEntityQuery(typeof(Zombie));
        int         entityCount = entityQuery.CalculateEntityCount();

        MarineShotZombieAction marineShotZombieAction;

        while (TestECS.queuedActions.TryDequeue(out marineShotZombieAction))
        {
            if (EntityManager.Exists(marineShotZombieAction.marineEntity) && EntityManager.Exists(marineShotZombieAction.zombieEntity))
            {
                float3 marinePosition    = EntityManager.GetComponentData <Translation>(marineShotZombieAction.marineEntity).Value;
                float3 zombiePosition    = EntityManager.GetComponentData <Translation>(marineShotZombieAction.zombieEntity).Value;
                float3 marineToZombieDir = math.normalize(zombiePosition - marinePosition);

                bool bonusEffects = (entityCount < 400 || UnityEngine.Random.Range(0, 100) < 60);
                if (bonusEffects)
                {
                    WeaponTracer.Create(marinePosition + marineToZombieDir * 10f, (Vector3)zombiePosition + UtilsClass.GetRandomDir() * UnityEngine.Random.Range(0, 20f));
                    Shoot_Flash.AddFlash(marinePosition + marineToZombieDir * 14f);
                    Blood_Handler.SpawnBlood(2, zombiePosition, marineToZombieDir);
                    UtilsClass.ShakeCamera(TestECS.GetCameraShakeIntensity(), .05f);
                    //Sound_Manager.PlaySound(Sound_Manager.Sound.Rifle_Fire, marinePosition);
                }

                Health zombieHealth = EntityManager.GetComponentData <Health>(marineShotZombieAction.zombieEntity);
                zombieHealth.health -= marineShotZombieAction.damageAmount;
                if (zombieHealth.health < 0)
                {
                    // Zombie dead!
                    FlyingBody.TryCreate(GameAssets.i.pfEnemyFlyingBody, zombiePosition, marineToZombieDir);
                    EntityManager.DestroyEntity(marineShotZombieAction.zombieEntity);
                    EntityManager.RemoveComponent <HasTarget>(marineShotZombieAction.marineEntity);
                }
                else
                {
                    // Zombie still has health
                    EntityManager.SetComponentData(marineShotZombieAction.zombieEntity, zombieHealth);
                }
            }
            else
            {
                if (EntityManager.Exists(marineShotZombieAction.marineEntity) && !EntityManager.Exists(marineShotZombieAction.zombieEntity))
                {
                    // Marine exists but zombie is dead
                    EntityManager.RemoveComponent <HasTarget>(marineShotZombieAction.marineEntity);
                }
            }
        }
    }
示例#2
0
    protected override void OnUpdate()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Debug.Log("Mouse Button Down");

            var mousePos = Input.mousePosition;
            var ray      = Camera.main.ScreenPointToRay(mousePos);

            ref var world = ref World.Active.GetExistingSystem <BuildPhysicsWorld>().PhysicsWorld.CollisionWorld;

            var input = new RaycastInput();
            input.Start  = ray.origin;
            input.End    = ray.origin + ray.direction * 1000;
            input.Filter = TestECS.filter((1 << 8), 0);

            if (world.CastRay(input, out var hit))
            {
                Debug.LogFormat("Collider Hit! {0}", hit.ToString());
            }
        }
示例#3
0
 private void Awake()
 {
     //Sound_Manager.Init((Sound_Manager.AudioType audioType) => .015f);
     instance      = this;
     queuedActions = new NativeQueue <MarineShotZombieAction>(Allocator.Persistent);
 }