В настоящее время я делаю сценарий движения, в котором я могу вращать игрока влево и вправо и просто вращать шею вверх и вниз; Но шея не будет вращаться ни вверх, ни вниз. По какой-то причине, если я обновляю скрипт во время игры (например, просто добавляю //test
), он работает. Любая идея, почему это и как я могу это исправить?
using UnityEngine;
using System.Collections;
public class Example : MonoBehaviour
{
CharacterController characterController;
public float speed = 6.0f;
public float jumpSpeed = 8.0f;
public float gravity = 20.0f;
public Transform neck;
private Vector3 moveDirection = Vector3.zero;
void Start()
{
characterController = GetComponent<CharacterController>();
Cursor.lockState = CursorLockMode.Locked;
}
void Update()
{
if (characterController.isGrounded)
{
//this
// We are grounded, so recalculate
// move direction directly from axes
var mousePosX = Input.GetAxis("Mouse X");
var mousePosY = Input.GetAxis("Mouse Y");
transform.Rotate(0, mousePosX, 0);
//Debug.Log("ABOVE - Y: " + mousePosY);
Debug.Log("ABOVE - ROT: " + neck.rotation);
neck.Rotate(Vector3.right, mousePosY, Space.Self);
//Debug.Log("BELOW - Y: " + mousePosY);
Debug.Log("BELOW - ROT: " + neck.rotation);
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0.0f,
Input.GetAxis("Vertical"));
moveDirection.z *= speed * 2;
moveDirection.x *= speed;
if (Input.GetButton("Jump"))
{
moveDirection.y = jumpSpeed;
}
}
moveDirection.y -= gravity * Time.deltaTime;
// Move the controller
characterController.Move(moveDirection * Time.deltaTime);
}
}