예제 #1
0
 public override void Enter()
 {
     base.Enter();
     _iKManager.SetAim(false);
     _iKManager.SetHold(false);
     _iKManager.SetLook(true);
 }
예제 #2
0
 public override void Enter()
 {
     base.Enter();
     _iKManager.SetAim(false);
     //_iKManager.SetLook(false);
     _weaponHandle.handPoint.localPosition    = runOffset._position;
     _weaponHandle.handPoint.localEulerAngles = runOffset._rotation;
 }
예제 #3
0
    public override void Enter()
    {
        base.Enter();

        process = 1;
        if (_weaponAttribute.active)
        {
            _animator.animator.SetTrigger("pickWeapon");
            _animator.animator.SetInteger("weaponTarget", (int)_weaponAttribute.type);
            _animator.AddEvent("weaponType", (int)_weaponAttribute.type);
            _iKManager.SetHoldTarget(_weaponAttribute.holdPoint);
            _iKManager.SetAim(false);
            _iKManager.SetHold(false);
            _iKManager.SetLook(true);

            endTimer.Enter(endTime);
            pickTimer.Enter(pickTime);

            _weaponHandle.locked = true;
            var cutMsg = new UiEvent.UiMsgs.WeaponCut()
            {
                texture = _weaponAttribute.cutPicInBattle
            };
            _uiMgr.SendEvent(cutMsg);

            var ammoMsg = new UiEvent.UiMsgs.Ammo()
            {
                ammo = _weaponAttribute.runtimeMag + (_weaponAttribute.bore ? 1f : 0f),
                mag  = _weaponAttribute.mag
            };
            _uiMgr.SendEvent(ammoMsg);

            var spreadMsg = new UiEvent.UiMsgs.Spread()
            {
                value = _weaponAttribute.spread
            };
            _uiMgr.SendEvent(spreadMsg);
        }
        else
        {
            _weaponAttribute.constraint.weight = 1;
            foreach (var state in _weaponAttribute.states.Values)
            {
                if (!state._name.Equals(this._name))
                {
                    if (state._active)
                    {
                        state.Exit();
                    }
                }
            }
            _weaponAttribute.ready = false;
            this._exitTick         = true;
        }

        _iKManager.SetAim(false);
        _iKManager.SetHold(false);
    }
예제 #4
0
    public override void Enter()
    {
        base.Enter();

        _weaponAttribute.reload = true;

        process = 1;

        _animator.animator.SetTrigger("reload");
        _ownAnimator.SetTrigger("reload");
        _iKManager.SetAim(false);
        _iKManager.SetHoldTarget(magIK);
        //_weaponHandle.locked = true;
    }
예제 #5
0
    public override void Enter()
    {
        base.Enter();

        _weaponAttribute.reload = true;

        _iKManager.SetAim(false);
        _iKManager.SetHold(false);

        _animator.animator.SetTrigger("reload");

        _audioSource.PlayOneShot(sound);

        //_weaponHandle.locked = true;
    }
예제 #6
0
    public override void Enter()
    {
        base.Enter();
        if (_velocity.armed)
        {
            _velocity.currentSpeed = speed;
            _animator.animator.SetBool("run", true);

            _iKManager.SetAim(false);

            if (!_velocity.isLocalPlayer)
            {
                _velocity.Drun = true;
            }
            timer.Enter(runStepTime);
        }
    }
예제 #7
0
    public override void Enter()
    {
        base.Enter();
        if (!_weaponAttribute.reload)
        {
            _iKManager.SetAim(true);
        }
        _velocity.Drun    = false;
        _velocity.aiming  = true;
        _camera.FOVtarget = FOV;

        var spreadMsg = new UiEvent.UiMsgs.Spread()
        {
            value = _weaponAttribute.runingSpread + 5f
        };

        _uiMgr.SendEvent(spreadMsg);
    }
예제 #8
0
    public override void Enter()
    {
        base.Enter();
        process = 1;
        timer.Enter(vanishTime);

        attributes.isDead = true;
        velocity.isActive = false;
        velocity.Reset();
        anim.animator.enabled   = false;
        attackListener.isActive = false;
        attackListener.Reset();
        iKManager.SetAim(false);
        iKManager.SetHold(false);
        iKManager.SetDead(true);
        weaponHandle.Reset();
        weaponHandle.active = false;
    }
예제 #9
0
    public override void Enter()
    {
        base.Enter();
        _velocity.Drun = false;
        _iKManager.SetAim(true);

        if (_velocity.isLocalPlayer)
        {
            if (_weaponAttribute.bore)
            {
                Sound.PlayOneShot(_audio, sound);
                _iKManager.aimIK.solver.axis = fireAxis;

                // 后坐力
                if (_velocity.aiming)
                {
                    _camera.forceX = _weaponAttribute.recoilX;
                    _camera.forceY = Random.Range(-_weaponAttribute.recoilY, _weaponAttribute.recoilY);
                }
                else
                {
                    _camera.forceX = _weaponAttribute.recoilX * 0.5f;
                }

                Transform OcclusionPoint = _weaponHandle.OcclusionPoint;

                if (Physics.Raycast(OcclusionPoint.position, OcclusionPoint.forward, out hitInfo, OcclusionSensorDistance, occlusionLayer.layerMask))
                {
                    startPoint  = OcclusionPoint.position;
                    targetPoint = hitInfo.point;
                    visable     = false;
                }
                else
                {
                    // 激活枪口火光
                    muzzleFlash.SetActive(false);
                    muzzleFlash.SetActive(true);

                    // 弹道扩散
                    if (_velocity.aiming)
                    {
                        float range = _weaponAttribute.runingSpread * 0.5f * Battle.relativeRate;
                        _weaponAttribute.runingSpread += this.spreadFroce;
                        _weaponAttribute.runingSpread  = Mathf.Clamp(_weaponAttribute.runingSpread, 0f, _weaponAttribute.aimSpread);

                        Vector2 offset = new Vector2(Random.Range(-range, range), Random.Range(-range, range));

                        startPoint  = _weaponHandle.shootPoint.position;
                        targetPoint = _camera.GetAimPoint(offset);

                        SendSpreadMsg();
                    }
                    else
                    {
                        float   range  = _weaponAttribute.spread * (_velocity.crouch ? _weaponAttribute.crouchSpreadRate * 0.5f : 0.5f) * Battle.relativeRate;
                        Vector2 offset = new Vector2(Random.Range(-range, range), Random.Range(-range, range));

                        startPoint  = _weaponHandle.shootPoint.position;
                        targetPoint = _camera.GetAimPoint(offset);
                        SendSpreadMsg(_weaponAttribute.spread * (_velocity.crouch ? _weaponAttribute.crouchSpreadRate : 1f) + 20f);
                    }
                    visable = Vector3.Distance(startPoint, targetPoint) >= bulletVisibleDistence;
                }

                Effect.AddBullet(
                    bullet, new Attack()
                {
                    source = _battleMgr,
                    demage = _weaponAttribute.damage,
                },
                    startPoint,
                    targetPoint,
                    _attributes.camp,
                    visable
                    );

                _weaponAttribute.OnFire?.Invoke();

                _photonView.RPC("NetworkFire", PhotonTargets.Others, _weaponAttribute.index, targetPoint);

                if (_weaponAttribute.runtimeMag > 0)
                {
                    _weaponAttribute.runtimeMag--;
                    _weaponAttribute.bore = true;
                }
                else
                {
                    _weaponAttribute.bore = false;
                }
            }
            timer.Enter(_weaponAttribute.interval);

            // 发送ui消息
            SendUiMsgs();

            _battleMgr.AddFire();

            _camera.mainCamera.fieldOfView += 0.25f;
        }
        else
        {
            Sound.PlayOneShot(_audio, sound);
            _iKManager.aimIK.solver.axis = fireAxis;

            Transform OcclusionPoint = _weaponHandle.OcclusionPoint;
            if (Physics.Raycast(OcclusionPoint.position, OcclusionPoint.forward, out hitInfo, OcclusionSensorDistance, occlusionLayer.layerMask))
            {
                startPoint = OcclusionPoint.position;
                visable    = false;
            }
            else
            {
                // 激活枪口火光
                muzzleFlash.SetActive(false);
                muzzleFlash.SetActive(true);
                startPoint = _weaponHandle.shootPoint.position;
            }

            Effect.AddBullet(
                bullet, new Attack()
            {
                source = _battleMgr,
                demage = 0
            },
                startPoint,
                targetPoint,
                _attributes.camp,
                visable,
                false
                );
        }
    }