示例#1
0
 protected override void HandleCollision()
 {
     if (LayerMaskUtil.ContainsLayer(mCollisionMask, mCollider.gameObject.layer))
     {
         mBomb.mDetonationActivated = true;
     }
 }
示例#2
0
 protected void HandleTriggerCollision(Collider collider)
 {
     if (LayerMaskUtil.ContainsLayer(mCollisionMask, collider.gameObject.layer))
     {
         mBomb.mDetonationActivated = true;
     }
 }
示例#3
0
 protected void HandleDestructionCollision(Collider collider)
 {
     if (LayerMaskUtil.ContainsLayer(mDestructionMask, collider.gameObject.layer))
     {
         Destroy(gameObject.transform.root.gameObject);
     }
 }
示例#4
0
 protected void HandleBomberCharacterCollision(Collider collider)
 {
     if (LayerMaskUtil.ContainsLayer(mBomberMask, collider.gameObject.layer))
     {
         HandleCollected(collider);
     }
 }
示例#5
0
 void OnTriggerEnter(Collider collider)
 {
     if (!mDestructionActivated && LayerMaskUtil.ContainsLayer(mDestroyLayerMask, collider.gameObject.layer))
     {
         mDestructionTime      = Time.time + 1;
         mDestructionActivated = true;
     }
 }
示例#6
0
    //private static readonly Action<SectionForceInput>[] ForceApplicators;

    //static Airfoil()  {
    //    ForceApplicators = new Action<SectionForceInput>[3];
    //    ForceApplicators[(int) ForceType.Lift] = ApplyLift;
    //    ForceApplicators[(int)ForceType.Drag] = ApplyDrag;
    //    ForceApplicators[(int)ForceType.Moment] = ApplyMoment;
    //}

    private void Awake()
    {
        ConfigureAxes();
        RecalculateSectionProperties();
        _layerMask = LayerMaskUtil.CreateLayerMask("Player", "Head", "UI", "Interactive").Invert();

        Clear();
    }
示例#7
0
 protected void OnTriggerEnter(Collider collider)
 {
     if (LayerMaskUtil.ContainsLayer(mPlayerMask, collider.gameObject.layer))
     {
         // TODO: Code the win pose here
         LevelChangeManager.ChangeLevel();
     }
 }
 private void Awake()
 {
     _layerMask = LayerMaskUtil.CreateLayerMask("Player", "Head", "UI", "Interactive").Invert();
     if (_predictionBuffer == null || _historyBuffer == null)
     {
         InitBuffers();
     }
 }
 protected override void HandleCollision()
 {
     if (mCollider != null)
     {
         if (LayerMaskUtil.ContainsLayer(mCollisionMask, mCollider.gameObject.layer))
         {
             mHitTakenController.ApplyHit();
         }
     }
 }
示例#10
0
 void OnTriggerExit(Collider other)
 {
     if (LayerMaskUtil.GetLayerMask(MyLayers.Interactable).Contains(other.gameObject.layer))
     {
         if (other.GetComponent <MonoInteractable>() == currentInteractable)
         {
             currentInteractable = null;
             EventBus.Post(new InteractableChangedEvent());
         }
     }
 }
示例#11
0
 public bool CheckCollision(LayerMask layers)
 {
     foreach (var collider in GetCollidersInside())
     {
         if (LayerMaskUtil.IsIncluded(layers, collider.gameObject.layer))
         {
             return(true);
         }
     }
     return(false);
 }
示例#12
0
 private IEnumerable <RaycastHit2D> GetHits(LayerMask layerMask, IEnumerable <RaycastHit2D> hits)
 {
     foreach (var hit in hits)
     {
         if (LayerMaskUtil.IsIncluded(layerMask, hit.collider.gameObject.layer))
         {
             yield return(hit);
         }
     }
     yield break;
 }
示例#13
0
 void OnTriggerEnter(Collider other)
 {
     if (LayerMaskUtil.GetLayerMask(MyLayers.Interactable).Contains(other.gameObject.layer))
     {
         var interactble = other.gameObject.GetComponent <MonoInteractable>();
         if (interactble && interactble.enabled)
         {
             currentInteractable = interactble;
             EventBus.Post(new InteractableChangedEvent());
         }
     }
 }
示例#14
0
    public void AddCollision(Collider collider)
    {
        if (LayerMaskUtil.ContainsLayer(mCollisionMask, collider.gameObject.layer))
        {
//			if(mCollisionEnabled && collider != null && mStrikeBoxCollider == null)
            if (!mHasCollision && mCollisionEnabled)
            {
                mHasCollision = true;
                mCollider     = collider;
//				mCollisionEnabled = false;
            }
        }
    }
示例#15
0
    IEnumerator CoroGenerateSheep()
    {
        yield return(new WaitUntil(() => GameContext.Instance));

        while (GameContext.Instance.pollutionState == PollutionState.None)
        {
            yield return(new WaitForSeconds(0.1f));

            var player = GameContext.Instance.player;
            foreach (var sheep in generatedSheep)
            {
                if (!sheep)
                {
                    continue;
                }
                if (Vector3.Distance(player.transform.position, sheep.transform.position) > maxSheepPlayerDist)
                {
                    Destroy(sheep);
                }
            }

            // 删除销毁的羊
            generatedSheep.RemoveAll(x => !x);

            // 尝试生成一个新的羊
            if (generatedSheep.Count < maxSheepCount &&
                (DateTime.Now - _lastGenerateTime).TotalSeconds > minGenerateTime)
            {
                var dist = sheepDistRange.random;
                var dir  = UnityEngine.Random.insideUnitCircle;
                var dir3 = new Vector3(dir.x, 0, dir.y);

                if (!Physics.Raycast(player.transform.position + Vector3.up, dir3, dist,
                                     LayerMaskUtil.GetLayerMask(0)))
                {
                    var npos          = player.transform.position + dir3 * dist;
                    var sheepInstance = Instantiate(prefab, transform);
                    sheepInstance.transform.position = npos;

                    generatedSheep.Add(sheepInstance);
                    _lastGenerateTime = DateTime.Now;
                    XDebug.Log("Generated new sheep");
                }
                else
                {
                    XDebug.Log("Position failed");
                }
            }
        }
    }
 protected override void HandleCollision()
 {
     if (mCollider != null)
     {
         if (LayerMaskUtil.ContainsLayer(mCollisionMask, mCollider.gameObject.layer))
         {
             mDestructionActivated = true;
             mCollisionEnabled     = false;
         }
     }
     else
     {
         CleanCollision();
     }
 }
示例#17
0
    protected void DrawBoxCollider(Collider collider)
    {
        if (collider.GetType() == typeof(BoxCollider))
        {
            BoxCollider boxCollider     = (BoxCollider)collider;
            Vector3     finalScale      = boxCollider.size;
            Transform   parentTransform = gameObject.transform.parent;

            if (parentTransform != null)
            {
                finalScale = Vector3.Scale(finalScale, parentTransform.localScale);
            }

            if (collider.isTrigger && GameFlag.drawTriggerBoxes)
            {
                if (LayerMaskUtil.ContainsLayerInGameObject(collider.gameObject, LayerName.EXPLOSION_STRIKE_BOX))
                {
                    Gizmos.color = Color.red;
                }
                else
                {
                    if (LayerMaskUtil.ContainsLayerInGameObject(collider.gameObject, LayerName.ENEMY_STRIKE_BOX))
                    {
                        Gizmos.color = Color.yellow;
                    }
                    else
                    {
                        Gizmos.color = Color.green;
                    }
                }

                Gizmos.DrawWireCube(collider.transform.position, finalScale);
            }

            if (!collider.isTrigger && GameFlag.drawNonTriggerBoxes)
            {
                Gizmos.color = Color.blue;
                Gizmos.DrawWireCube(collider.transform.position, finalScale);
            }
        }
    }
示例#18
0
//	void OnDrawGizmosSelected()
//	{
//		Render();
//	}

    protected void Render()
    {
        GameObject[] gameObjects = GameObject.FindObjectsOfType <GameObject>();

        foreach (GameObject gameObject in gameObjects)
        {
            if (mRenderer != null && !LayerMaskUtil.ContainsLayer(mIgnoredLayer, gameObject.layer))
            {
                Collider[] colliders = gameObject.GetComponents <Collider>();

                foreach (Collider collider in colliders)
                {
                    if (!collider.enabled)
                    {
                        continue;
                    }

                    DrawBoxCollider(collider);
//					DrawCapsuleCollider(collider);
                    DrawSphereCollider(collider);
                }
            }
        }
    }
示例#19
0
 void Awake()
 {
     _layerMask = LayerMaskUtil.CreateLayerMask(_layers);
 }