Esempio n. 1
0
    public virtual void Fire(UBattleUnit startUnit, Vector3 endPosition, float duration, string easeName = null)
    {
        this.BindGameLoop();

        _transStart    = startUnit.GetBoneTransform("missile");
        _startUnit     = startUnit;
        _startUnitId   = startUnit.unitId;
        _startPosition = _transStart.position;
        _startAngle    = _startUnit.curDirectionAngle;

        _transEnd        = null;
        _endUnit         = null;
        _endUnitId       = 0;
        _endPosition     = endPosition;
        _endTeleportFlag = -1;

        _duration  = duration <= 0 ? _duration : duration;
        _startTime = GetMSTime();
        _easeName  = string.IsNullOrEmpty(easeName) ? _easeName : easeName;
        _easeFunc  = EaseFunc.GetFunction(easeName);

        _transform          = this.transform;
        _transform.position = _startPosition;

        _isEnded          = false;
        _delayTimeCounter = _delayTime;

        this.OnEffectStart();
    }
Esempio n. 2
0
    public virtual void Fire(GameObject objStart, Vector3 endPosition, float duration, string easeName = null)
    {
        this.BindGameLoop();

        _transStart    = objStart.transform;
        _startUnit     = null;
        _startUnitId   = 0;
        _startPosition = _transStart.position;
        _startAngle    = -1.0f;

        _transEnd        = null;
        _endUnit         = null;
        _endUnitId       = 0;
        _endPosition     = endPosition;
        _endTeleportFlag = -1;

        _duration  = duration <= 0 ? _duration : duration;
        _startTime = GetMSTime();
        _easeName  = string.IsNullOrEmpty(easeName) ? _easeName : easeName;
        _easeFunc  = EaseFunc.GetFunction(easeName);

        _transform          = this.transform;
        _transform.position = _startPosition;

        _isEnded          = false;
        _delayTimeCounter = _delayTime;

        this.OnEffectStart();
    }
Esempio n. 3
0
    public void Fire(int index, UBattleUnit uUnit, string eventName)
    {
        _uTowerBase?.Fire(index);

        if (_autoRotateSpineList.Count == 0)
        {
            FireUnitEvent(eventName);
            return;
        }
        var startPos = GetBonePosition("center");
        var endPos   = uUnit.GetBonePosition("body");
        var angle    = UGameTools.GetPosAngle(startPos, endPos);

        for (int i = 0; i < _autoRotateSpineList.Count; i++)
        {
            var spine = _autoRotateSpineList[i];
            spine.UpdateDirectionByAngle(angle);
            if (i == 0)
            {
                _curDirectionAngle = spine.GetCurDirectionAngle();
                if (_boneMissile != null)
                {
                    _boneMissile.position = spine.GetBulletWorldPosition();
                }
            }
        }
        FireUnitEvent(eventName);
    }
Esempio n. 4
0
    public static int ComparePosition(UBattleUnit leftUnit, UBattleUnit rightUnit)
    {
        var result = -leftUnit._logicPosition.CompareTo(rightUnit._logicPosition);

        if (result != 0)
        {
            return(result);
        }
        return(leftUnit.unitId.CompareTo(rightUnit.unitId));
    }
Esempio n. 5
0
 public void RemoveSortUnit(UBattleUnit unit)
 {
     for (int i = 0; i < _sortUnitList.Count; i++)
     {
         if (unit.unitId == _sortUnitList[i].unitId)
         {
             _sortUnitList.RemoveAt(i);
             break;
         }
     }
 }
Esempio n. 6
0
    public void ShowDamage(UBattleUnit unit, int damage, int prefabNameId, int prefabFolderId, int boneNameId)
    {
        var prefabName   = GameStrings.Get(prefabNameId);
        var prefabFolder = GameStrings.Get(prefabFolderId);
        var uDamage      = damagePool.RequestComponent <UBattleDamage>(prefabName, prefabFolder, true, this.objTopCanvas.transform);

        if (uDamage == null)
        {
            return;
        }
        using (zstring.Block())
        {
            uDamage.txtDamage.text = zstring.Format("{0}", damage).Intern();
        }
        var boneName = GameStrings.Get(boneNameId);

        boneName = string.IsNullOrEmpty(boneName) ? "head" : boneName;
        uDamage.transform.position = unit.GetBonePosition(boneName);
    }
Esempio n. 7
0
    public bool FireMissile(UBattleUnit uOwnerUnit, float pendingTime)
    {
        if (_effectContainer == null || uOwnerUnit == null || pendingTime <= 0)
        {
            return(false);
        }
        _effectContainer.Request();
        if (_effectContainer.poolObjectList.Count == 0)
        {
            return(false);
        }
        var objMissile    = _effectContainer.poolObjectList[0];
        var missileEffect = objMissile?.GetComponent <UBattleEffect>();

        if (missileEffect == null)
        {
            return(false);
        }
        missileEffect.Fire(uOwnerUnit, _effectContainer.transform.position, pendingTime, null);
        return(true);
    }
Esempio n. 8
0
    public void Play(UBattleUnit battleUnit)
    {
        this.BindGameLoop(loop);

        _startUnit       = battleUnit;
        _endUnit         = battleUnit;
        _endTeleportFlag = _endUnit.teleportFlag;

        _transform = this.transform;
        var position = battleUnit.GetBonePosition(_targetBoneName);

        position.z          = _transform.position.z;
        _transform.position = position;

        if (_followTargetScale)
        {
            _transform.localScale = battleUnit.transform.localScale;
        }

        _isEnded          = false;
        _delayTimeCounter = _delayTime;

        this.OnEffectStart();
    }
Esempio n. 9
0
 private static int Init(UBattleCollider uCollider, Transform transParent, int unitId, float posX, float posY, float zFactor, int direction, float logicPosition, UBattleUnit uOwnerUnit, float pendingTime)
 {
     uCollider = LUBattleUnit.Init(uCollider, unitId, false);
     if (uCollider == null)
     {
         return(0);
     }
     uCollider.transform.SetParent(transParent, false);
     uCollider.SetPosition(posX, posY, zFactor, direction, logicPosition);
     if (!uCollider.FireMissile(uOwnerUnit, pendingTime))
     {
         uCollider.Begin();
     }
     return(unitId);
 }
Esempio n. 10
0
 public void AddSortUnit(UBattleUnit unit)
 {
     _sortUnitList.Add(unit);
 }