public void SyncTo(IGameComponent characterBoneComponent) { var value = characterBoneComponent as CharacterBoneComponent; if (null == value) { return; } value.PitchHeadAngle = FollowRotHelper.PitchHeadAngle(); value.RotHeadAngle = FollowRotHelper.YawHeadAngle(); value.CurrentPitchHandAngle = _currentHandPitch; }
private void CalcWeaponRotAngle(Transform rightClavicle) { if (FollowRotHelper.CanRotWeapon() && Physics.Raycast(rightClavicle.position, _characterP3.transform.forward, ClavicleWeaponDistance, UnityLayers.SceneCollidableLayerMask)) { _weaponPitchPercent = -1; } else { _weaponPitchPercent = 0; } }
public void SyncTo(IGameComponent characterBoneComponent) { var value = characterBoneComponent as CharacterBoneComponent; if (null == value) { return; } value.PitchHeadAngle = FollowRotHelper.PitchHeadAngle(); value.RotHeadAngle = FollowRotHelper.YawHeadAngle(); value.HeadRotProcess = FollowRotHelper.HeadRotProcess(); value.PitchHandAngle = FollowRotHelper.PitchHandAngle(); value.IsHeadRotCW = FollowRotHelper.IsHeadRotCw(); }
public void SyncTo(ICharacterBoneState state) { //state.NeckP3Pitch = FollowPitch(FollowRotHelper.PitchHeadAngle(), _neckP3); //state.HeadP3Pitch = FollowPitch(FollowRotHelper.PitchHeadAngle(), _headP3); //var yaw = SlerpHeadRot(FollowRotHelper.HeadRotProcess(), FollowRotHelper.YawHeadAngle(), FollowRotHelper.IsHeadRotCW()); //state.NeckP3Yaw = FollowYaw(yaw, _neckP3); //state.HeadP3Yaw = FollowYaw(yaw, _headP3); state.PitchHeadAngle = FollowRotHelper.PitchHeadAngle(); state.RotHeadAngle = FollowRotHelper.YawHeadAngle(); state.HeadRotProcess = FollowRotHelper.HeadRotProcess(); state.PitchHandAngle = FollowRotHelper.PitchHandAngle(); state.IsHeadRotCW = FollowRotHelper.IsHeadRotCw(); }
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); }