/// <summary> /// 人物移动 /// </summary> public void SimpleMove() { float h = Input.GetAxis("Horizontal"); float v = Input.GetAxis("Vertical"); if (h != 0 || v != 0) { float va = mainCamTrans.gameObject.GetComponent <Camera>().fieldOfView; movedir = transform.TransformDirection(new Vector3(h, 0, v).normalized *moveSpeed *va *Time.deltaTime); characterTrans.GetComponent <CharacterController>().Move(movedir); //有重力的效果 var velocity = GetComponent <CharacterController>().velocity; var currentMovementOffset = velocity * Time.deltaTime; var pushDownOffset = Mathf.Max(GetComponent <CharacterController>().stepOffset, new Vector3(currentMovementOffset.x, 0, currentMovementOffset.z).magnitude); currentMovementOffset = (-1) * pushDownOffset * Vector3.up; GetComponent <CharacterController>().Move(currentMovementOffset); FirstViewDataEntity fvde = (FirstViewDataEntity)GameObject.FindObjectOfType <FirstViewControlDataModel>().DataEntity; fvde.playerPos = characterTrans.localPosition; } }
void Awake() { instance = this; FirstViewDataEntity fvde = new FirstViewDataEntity(); this.DataEntity = fvde; Watch(this); }
private float camHeightMax = 2f; //相机最高高度 /// <summary> /// 相机上下移动 /// </summary> public void CamUpDown() { if (Input.GetMouseButton(2))// { shangXia = shangXia + 0.5f * Input.GetAxis("Mouse Y"); shangXia = Mathf.Clamp(shangXia, -5.3f, 5.3f); mainCamTrans.localPosition = new Vector3(mainCamTrans.localPosition.x, Mathf.Clamp(mainCamTrans.localPosition.y, camHeightMin, camHeightMax), mainCamTrans.localPosition.z); mainCamTrans.Translate(0, shangXia * 0.01f, 0, Space.World); FirstViewDataEntity fvde = ((FirstViewDataEntity)FirstViewControlDataModel.instance.DataEntity); fvde.cameraPos = mainCamTrans.localPosition; } else if (Input.GetMouseButtonUp(2)) { shangXia = 0; } }
/// <summary> /// 相机旋转 /// </summary> public void RotateCamera() { if (Input.GetMouseButton(0)) { float yRot = Input.GetAxis("Mouse X") * XSensitivity; float xRot = Input.GetAxis("Mouse Y") * YSensitivity; m_CharacterTargetRot *= Quaternion.Euler(0f, yRot, 0f); m_CameraTargetRot *= Quaternion.Euler(-xRot, 0f, 0f); if (clampVerticalRotation) { m_CameraTargetRot = ClampRotationAroundXAxis(m_CameraTargetRot); } if (smooth) { characterTrans.localRotation = Quaternion.Slerp(characterTrans.localRotation, m_CharacterTargetRot, smoothTime * Time.deltaTime); mainCamTrans.localRotation = Quaternion.Slerp(mainCamTrans.localRotation, m_CameraTargetRot, smoothTime * Time.deltaTime); } else { characterTrans.localRotation = m_CharacterTargetRot; mainCamTrans.localRotation = m_CameraTargetRot; } FirstViewDataEntity fvde = ((FirstViewDataEntity)FirstViewControlDataModel.instance.DataEntity); fvde.playerRot = characterTrans.localEulerAngles; fvde.cameraRot = mainCamTrans.localEulerAngles; } if (Input.GetMouseButtonUp(0)) { if (smooth) { IniQuaternion(); } } }