因此,在计划创建手机游戏时,我一直在尝试使用不同的方法来使用游戏杆。.但是似乎我选择的角色与我尝试制作的脚本没有配合...任何知道如何使用此模型([https://assetstore.unity.com/packages/tools/utilities/third-person-controller-basic-locomotion-free-82048)]]]来创建完美的游戏杆(Movement + jump +带触摸的相机旋转)的人都可以。
这里是模型的脚本:
使用UnityEngine;
命名空间Invector.vCharacterController{公共类vThirdPersonController:vThirdPersonAnimator{公共虚拟虚空ControlAnimatorRootMotion(){如果(!this.enabled)返回;
if (inputSmooth == Vector3.zero) { transform.position = animator.rootPosition; transform.rotation = animator.rootRotation; } if (useRootMotion) MoveCharacter(moveDirection); } public virtual void ControlLocomotionType() { if (lockMovement) return; if (locomotionType.Equals(LocomotionType.FreeWithStrafe) && !isStrafing || locomotionType.Equals(LocomotionType.OnlyFree)) { SetControllerMoveSpeed(freeSpeed); SetAnimatorMoveSpeed(freeSpeed); } else if (locomotionType.Equals(LocomotionType.OnlyStrafe) || locomotionType.Equals(LocomotionType.FreeWithStrafe) && isStrafing) { isStrafing = true; SetControllerMoveSpeed(strafeSpeed); SetAnimatorMoveSpeed(strafeSpeed); } if (!useRootMotion) MoveCharacter(moveDirection); } public virtual void ControlRotationType() { if (lockRotation) return; bool validInput = input != Vector3.zero || (isStrafing ? strafeSpeed.rotateWithCamera : freeSpeed.rotateWithCamera); if (validInput) { // calculate input smooth inputSmooth = Vector3.Lerp(inputSmooth, input, (isStrafing ? strafeSpeed.movementSmooth : freeSpeed.movementSmooth) * Time.deltaTime); Vector3 dir = (isStrafing && (!isSprinting || sprintOnlyFree == false) || (freeSpeed.rotateWithCamera && input == Vector3.zero)) && rotateTarget ? rotateTarget.forward : moveDirection; RotateToDirection(dir); } } public virtual void UpdateMoveDirection(Transform referenceTransform = null) { if (input.magnitude <= 0.01) { moveDirection = Vector3.Lerp(moveDirection, Vector3.zero, (isStrafing ? strafeSpeed.movementSmooth : freeSpeed.movementSmooth) * Time.deltaTime); return; } if (referenceTransform && !rotateByWorld) { //get the right-facing direction of the referenceTransform var right = referenceTransform.right; right.y = 0; //get the forward direction relative to referenceTransform Right var forward = Quaternion.AngleAxis(-90, Vector3.up) * right; // determine the direction the player will face based on input and the referenceTransform's right and forward directions moveDirection = (inputSmooth.x * right) + (inputSmooth.z * forward); } else { moveDirection = new Vector3(inputSmooth.x, 0, inputSmooth.z); } } public virtual void Sprint(bool value) { var sprintConditions = (input.sqrMagnitude > 0.1f && isGrounded && !(isStrafing && !strafeSpeed.walkByDefault && (horizontalSpeed >= 0.5 || horizontalSpeed <= -0.5 || verticalSpeed <= 0.1f))); if (value && sprintConditions) { if (input.sqrMagnitude > 0.1f) { if (isGrounded && useContinuousSprint) { isSprinting = !isSprinting; } else if (!isSprinting) { isSprinting = true; } } else if (!useContinuousSprint && isSprinting) { isSprinting = false; } } else if (isSprinting) { isSprinting = false; } } public virtual void Strafe() { isStrafing = !isStrafing; } public virtual void Jump() { // trigger jump behaviour jumpCounter = jumpTimer; isJumping = true; // trigger jump animations if (input.sqrMagnitude < 0.1f) animator.CrossFadeInFixedTime("Jump", 0.1f); else animator.CrossFadeInFixedTime("JumpMove", .2f); } }
}
如果您可以发送正确的脚本
和放置它的方法...。那太好了非常感谢请希望一些professional
可以查看并回复...谢谢-StuntStorm因此,当我计划创建移动游戏时,我一直在尝试使用不同的方法来使用操纵杆。但是,似乎我选择的角色与我尝试制作的脚本没有配合...所以...] >
bruh ...没人?我以为有人对此有答案