private void CreateBulletEffect(WeaponAttackProxy attackProxy, ICharacterBone bones) { if (DefaultCfg.BulletFly < 1 || attackProxy.IsAiming) { return; } var muzzleTrans = bones.GetLocation(SpecialLocation.MuzzleEffectPosition, attackProxy.Appearence.IsFirstPerson ? CharacterView.FirstPerson : CharacterView.ThirdPerson); if (!muzzleTrans) { return; } var efcCommonCfg = SingletonManager.Get <ClientEffectCommonConfigManager>() .GetConfigByType(EEffectObjectClassify.BulletFly); foreach (var bulletData in attackProxy.Owner.BulletList) { var origin = bulletData.ViewPosition; var velocity = efcCommonCfg.Velocity * bulletData.Dir; Vector3 target = origin + velocity * 1.0f; Vector3 bulletEffectVelocity = (target - bulletData.EmitPosition) / 1.0f; ClientEffectFactory.CreateBulletFlyEffect(attackProxy.Owner.Owner, muzzleTrans.position, muzzleTrans.rotation, bulletEffectVelocity, DefaultCfg.BulletFly, efcCommonCfg.Delay); } }
public void PreUpdate(FollowRotParam param, ICharacterBone characterBone) { //人物正向和载具正向相差180度 var curAngle = param.CameraFreeYaw; var needReverse = FollowRotHelper.NeedReverse(); if (needReverse) { curAngle = curAngle + (curAngle > 0 ? -180 : 180); } if (curAngle * characterBone.LastHeadRotAngle < _horizontalHeadRotMax * _horizontalHeadRotMin ) //头部水平旋转角穿过+-180度(暂定最大旋转角度为+-60) { characterBone.LastHeadRotSlerpTime = param.ClientTime; characterBone.IsHeadRotCW = curAngle > 0; // needReverse // ? curAngle < 0 // : curAngle > 0; } if (FollowRotHelper.ForbidRot()) { characterBone.ForbidRot = true; } else if (param.CameraFreeNowMode != (byte)ECameraFreeMode.On && param.CameraEulerAngle == Vector3.zero) { characterBone.ForbidRot = false; } if (characterBone.ForbidRot) { characterBone.LastHeadRotAngle = 0; } else { characterBone.LastHeadRotAngle = curAngle; } }
public void PreUpdate(FollowRotParam param, ICharacterBone characterBone, float deltaTime) { //人物正向和载具正向相差180度 var curAngle = param.CameraFreeYaw; var needReverse = FollowRotHelper.NeedReverse(); if (needReverse) { curAngle = curAngle + (curAngle > 0 ? -180 : 180); } if (curAngle > NoHeadRotStart) { curAngle = 0; } if (curAngle < -NoHeadRotStart) { curAngle = 0; } if (FollowRotHelper.ForbidRot()) { characterBone.ForbidRot = true; } else { characterBone.ForbidRot = false; } var aimAngle = characterBone.ForbidRot ? 0 : curAngle; characterBone.LastHeadRotAngle = CalcuStepRotAngle(aimAngle, characterBone.LastHeadRotAngle, deltaTime); CalcCurrentHandPitch(FollowRotHelper.PitchHandAngle(), deltaTime); }
protected virtual void CreateFireRelatedEffect(WeaponAttackProxy attackProxy, ICharacterBone bones) { if (DefaultCfg.Spark < 1) { return; } var muzzleTrans = bones.GetLocation(SpecialLocation.MuzzleEffectPosition, attackProxy.Appearence.IsFirstPerson ? CharacterView.FirstPerson : CharacterView.ThirdPerson); var ejectTrans = bones.GetLocation(SpecialLocation.EjectionLocation, attackProxy.Appearence.IsFirstPerson ? CharacterView.FirstPerson : CharacterView.ThirdPerson); bool hasMuzzleEfc = muzzleTrans && DefaultCfg.Spark > 0 && attackProxy.Owner.HeldWeaponAgent.HasSpark; bool hasBulletDrop = ejectTrans && DefaultCfg.BulletDrop > 0; if (hasMuzzleEfc) { ClientEffectFactory.CreateMuzzleSparkEffct(muzzleTrans.position, attackProxy.Orientation.Yaw, attackProxy.Orientation.Pitch, DefaultCfg.Spark, muzzleTrans); } if (hasBulletDrop) { ClientEffectFactory.CreateBulletDrop(ejectTrans.position, attackProxy.Orientation.Yaw, attackProxy.Orientation.Pitch, DefaultCfg.BulletDrop, attackProxy.WeaponConfigAssy.S_Id, attackProxy.AudioController.GetFootMatType()); } }
public void PreUpdate(FollowRotParam param, ICharacterBone characterBone, float deltaTime) { _followRot.PreUpdate(param, characterBone, deltaTime); }
public void PreUpdate(FollowRotParam param, ICharacterBone characterBone) { _followRot.PreUpdate(param, characterBone); }
protected override void CreateFireRelatedEffect(WeaponAttackProxy attackProxy, ICharacterBone bones) { if (DefaultCfg.Spark < 1) { return; } var muzzleTrans = bones.GetLocation(SpecialLocation.MuzzleEffectPosition, attackProxy.Appearence.IsFirstPerson ? CharacterView.FirstPerson : CharacterView.ThirdPerson); var ejectTrans = bones.GetLocation(SpecialLocation.EjectionLocation, attackProxy.Appearence.IsFirstPerson ? CharacterView.FirstPerson : CharacterView.ThirdPerson); bool hasMuzzleEfc = null != muzzleTrans && DefaultCfg.Spark > 0 && attackProxy.Owner.HeldWeaponAgent.HasSpark; bool hasBulletDrop = null != ejectTrans && DefaultCfg.BulletDrop > 0; if (!hasMuzzleEfc && !hasBulletDrop) { return; } FireEvent.FireEffectType fireEffectType = FireEvent.FireEffectType.Both; if (!hasMuzzleEfc) { fireEffectType = FireEvent.FireEffectType.EnjectOnly; } if (!hasBulletDrop) { fireEffectType = FireEvent.FireEffectType.MuzzleOnly; } FireEvent e = (FireEvent)EventInfos.Instance.Allocate(EEventType.Fire, false); e.owner = attackProxy.Owner.Owner; e.fireEffectType = fireEffectType; e.pitch = attackProxy.Orientation.Pitch; e.yaw = attackProxy.Orientation.Yaw; e.weaponId = attackProxy.WeaponConfigAssy.S_Id; attackProxy.Owner.RelatedLocalEvents.AddEvent(e); }