//private void OnGUI() //{ // if (Target == null || !_hasCamera) return; // if (_bTouchMouse) return; // if (TouchRect.width == 0) // { // TouchRect = EasyJoystick.GetTouchRect(); // } // if (UnityEngine.Event.current.type == EventType.MouseDown) // { // if (EventSystem.current.IsPointerOverGameObject()) // { // _bVaildDrag = false; // // _dragging = false; // return; // } // //记录鼠标按下的位置 // _firstPoint = UnityEngine.Event.current.mousePosition; // if ((TouchRect.width != 0) && !TouchRect.Contains(_firstPoint)) // { // _bVaildDrag = true; // // Debug.Log("_bVaildDrag__bVaildDrag__bVaildDrag!!::"+ TouchRect + ",,_firstPoint::"+ _firstPoint); // } // else // { // _bVaildDrag = false; // } // // Debug.Log("_firstPoint::" + _firstPoint + ",_bVaildDrag::" + _bVaildDrag); // // _dragging = false; // } // else if (UnityEngine.Event.current.type == EventType.MouseDrag) // { // if (!_dragging && EventSystem.current.IsPointerOverGameObject()) // { // return; // } // //记录鼠标拖动的位置 // if (!_bVaildDrag) // { // _firstPoint = _secondPoint; // return; // } // // Debug.Log("_bVaildDrag::" + _bVaildDrag); // // _dragging = _bVaildDrag; // _secondPoint = UnityEngine.Event.current.mousePosition; // Vector2 slideDirection = _secondPoint - _firstPoint; // float x = slideDirection.x, y = slideDirection.y; // if (y < x && y > -x) // right // { // //_directorToLeft = false; // //_directorToRight = true; // } // else if (y > x && y < -x)// left // { // //_directorToLeft = true; // //_directorToRight = false; // } // else // { // //_directorToLeft = false; // //_directorToRight = false; // } // // _bBeforeDragging = _dragging; // //if (!TouchRect.Contains(_firstPoint) && _bVaildDrag) // //{ // // _bBeforeDragging = true; // //} // _firstPoint = _secondPoint; // } // else if (UnityEngine.Event.current.type == EventType.MouseUp) // { // //Debug.Log("Up_up_bVaildDrag::"+ _bVaildDrag); // // _dragging = false; // _bVaildDrag = false; // } // // Debug.Log("Event.current.type::" + Event.current.type); //} #endregion #region 3)============= 设置对象旋转角度、forward等相关计算操作 ============= /// <summary> /// 设置目标对象 /// </summary> /// <param name="targetObj"></param> public void SetTarget(Transform targetObj) { if (Target == null) { Target = targetObj; _motionObj = Target.GetComponent <CharacterMotion>(); _avatarObj = Target.GetComponent <Avatar>(); _childTransformObj = Target.transform.Find(PlayerCommonName.ChildName).GetComponent <U_FPTransform>(); _playerTransformObj = Target.GetComponent <U_FPTransform>(); _rayPointObj = _childTransformObj.transform.Find("RayPoint"); Debug.Log("SetTarget is success!!"); } }
public void init() { if (_ufpTransform != null) { return; } MoveSpeed = 2f; //移动速度 _verCurSpeed = MoveSpeed; //设置为移动速度一致 _childObj = gameObject.transform.Find(PlayerCommonName.ChildName).GetComponent <U_FPTransform>(); MoveByInkFlag = true; _layerNum = LayerMask.NameToLayer("RenderLayer"); _ufpTransform = gameObject.GetComponent <U_FPTransform>(); }
/// <summary> /// 改变朝向,改变forward的朝向跟摄像机的朝向一样 /// </summary> /// <param name="forward"></param> public void ChangeAvatarForward(FPVector toForward) { JoystickAngle = 90; if (AvatarForm == E_AvatarForm.PERSON_STATE) { _ufpTransformChildObj.ChangeForward(toForward); return; } RaycastHit _groundHit; _characterMotionObj.RayGroundInfo(out _groundHit); FPVector _fpNormal = _ufpTransformChildObj.ChangeVec3ToTSVec(_groundHit.normal); if (_groundHit.normal == Vector3.up) { _ufpTransformChildObj.ChangeForward(toForward); // _childObj.forward = toForward; JoystickAngle = 90; return; } else { FPVector left = FPVector.Cross(toForward, _fpNormal); //切线 FPVector newForward = FPVector.Cross(_fpNormal, left); if (_fpNormal == FPVector.zero) { Debug.Log("forward:::" + toForward); return; } FPQuaternion newRotation = FPQuaternion.LookRotation(newForward, _fpNormal); U_FPTransform ComMoveTransform = ComMoveFollowObj.GetFPTransform(); FPQuaternion comObject = new FPQuaternion(ComMoveTransform.rotation.x, ComMoveTransform.rotation.y, ComMoveTransform.rotation.z, ComMoveTransform.rotation.w); // ComMoveFollowObj.transform.rotation = newRotation; ComMoveTransform.SetRotation(newRotation); FPVector comForward = ComMoveTransform.forward; FPVector childForward = _ufpTransformChildObj.forward; FP DragAngle = FPVector.Angle(comForward, childForward); DragAngle = FPMath.Sign(FPVector.Cross(childForward, comForward).y) * DragAngle; ChangeAvaterForward(DragAngle); //改变对象的旋转数值 ComMoveTransform.SetRotation(comObject); //恢复摄像机原来的rotation数值 } }
private void Awake() { _motionObj = Target.GetComponent <CharacterMotion>(); _avatarObj = Target.GetComponent <Avatar>(); _childTransformObj = Target.transform.Find(PlayerCommonName.ChildName).GetComponent <U_FPTransform>(); _playerTransformObj = Target.GetComponent <U_FPTransform>(); _rayPointObj = _childTransformObj.transform.Find("RayPoint"); _ufpTransform = gameObject.GetComponent <U_FPTransform>(); Debug.Log("SetTarget is success!!"); //test ..先主动加载摄像机 if (gameObject.transform.parent.transform.name == "AvatarPlayer") { SetCameraObj(); } }
public void Init() { AvatarState = E_AvatarState.AS_ALIVE; AvatarMotion = E_AvatarMotionState.AM_IDLE; AvatarForm = E_AvatarForm.PERSON_STATE; _beforeAvatarForm = E_AvatarForm.PERSON_STATE; AvatarBehavior = E_AvatarBehavior.B_NONE; _motionStateCount = Enum.GetValues(typeof(E_AvatarMotionState)).Length; _childObj = gameObject.transform.Find(PlayerCommonName.ChildName); _ufpTransformObj = transform.GetComponent <U_FPTransform>(); _ufpTransformChildObj = _childObj.GetComponent <U_FPTransform>(); _characterMotionObj = transform.GetComponent <CharacterMotion>(); _hp = HpMax; AutoRenderSplatData(AvatarEntityId); Debug.Log("AvatarId::" + AvatarEntityId + " == > InitInitInitInitInitInitInitInitInitInit!!!"); }