void OnTriggerEnter2D(Collider2D collider) { if (collider.transform.tag == "unit") { if ( _state == States.WAITING_ORIGIN || _state == States.WAITING_TARGET || _state == States.TRAVELING ) { // Retrieve unit to integrate CharacterSystem unitToIntegrate = collider.gameObject.GetComponent <CharacterSystem>(); if ( unitToIntegrate != null && (unitToIntegrate == _originUnit || unitToIntegrate == _targetUnit) ) { return; } if (unitToIntegrate._frontUnits.Contains(_originUnit)) { return; } CharacterSystem.IntegratePathBehindUnit( _originUnit, unitToIntegrate ); // Remove this order from old target's waiting list if (_targetUnit != null) { _targetUnit._pendingOrder.Remove(this); } // Set unit to integrate as new target _targetUnit = unitToIntegrate; _targetUnit.transform.position = transform.position; if (_targetUnit._currentOrder != null) { _targetUnit._orderCompleated = true; } _integrateUnitFound = true; // _targetUnit._frontUnits.Add(_originUnit); // Add this order to the new target waiting list /* * if (_targetUnit != null) * _targetUnit._pendingOrder.Add(this); */ if (_state == States.TRAVELING) { // Desactivate de delay feedback _durationTransform.gameObject.SetActive(false); // Recalculate the particle feedback _particle.SetNewTarget(_targetUnit); return; } } } }