Transfer character movement
This commit is contained in:
		
							
								
								
									
										98
									
								
								Assets/Scripts/PlayerManager.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										98
									
								
								Assets/Scripts/PlayerManager.cs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,98 @@
 | 
			
		||||
using System.Collections;
 | 
			
		||||
using System.Collections.Generic;
 | 
			
		||||
using UnityEngine;
 | 
			
		||||
 | 
			
		||||
public class PlayerManager : MonoBehaviour
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
    public float speed = 8;
 | 
			
		||||
    public float runSpeed = 20;
 | 
			
		||||
    public float rotateSpeed = 5;
 | 
			
		||||
    public float mouseSensitive = 100;
 | 
			
		||||
    private bool run = false;
 | 
			
		||||
    private Camera playerCamera;
 | 
			
		||||
    private Rigidbody rigidBody;
 | 
			
		||||
 | 
			
		||||
    // Start is called before the first frame update
 | 
			
		||||
    void Start()
 | 
			
		||||
    {
 | 
			
		||||
        playerCamera = GetComponentInChildren<Camera>();
 | 
			
		||||
        rigidBody = GetComponent<Rigidbody>();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    // Update is called once per frame
 | 
			
		||||
    void Update()
 | 
			
		||||
    {
 | 
			
		||||
        if (Input.GetKeyDown(KeyCode.Escape))
 | 
			
		||||
        {
 | 
			
		||||
            Application.Quit(0);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Move();
 | 
			
		||||
        RunSwitch();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void FixedUpdate()
 | 
			
		||||
    {
 | 
			
		||||
        Rotate();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void RunSwitch()
 | 
			
		||||
    {
 | 
			
		||||
        if (Input.GetAxisRaw("Run") > 0)
 | 
			
		||||
        {
 | 
			
		||||
            run = true;
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            run = false;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void Move()
 | 
			
		||||
    {
 | 
			
		||||
        rigidBody.MovePosition(
 | 
			
		||||
            transform.position +
 | 
			
		||||
            (transform.forward * (run ? runSpeed : speed) * Input.GetAxis("Vertical") * Time.deltaTime) +
 | 
			
		||||
            (transform.right * (run ? runSpeed : speed) * Input.GetAxis("Horizontal") * Time.deltaTime)
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    void Rotate()
 | 
			
		||||
    {
 | 
			
		||||
        rigidBody.freezeRotation = false;
 | 
			
		||||
        transform.Rotate(new Vector3(0, rotateSpeed * Input.GetAxis("Mouse X") * mouseSensitive * Time.deltaTime, 0));
 | 
			
		||||
        if (
 | 
			
		||||
            ((playerCamera.transform.localEulerAngles.x >= 270 && playerCamera.transform.localEulerAngles.x <= 360) &&
 | 
			
		||||
            playerCamera.transform.localEulerAngles.y == 0 &&
 | 
			
		||||
            playerCamera.transform.localEulerAngles.z == 0) ||
 | 
			
		||||
            ((playerCamera.transform.localEulerAngles.x <= 90 && playerCamera.transform.localEulerAngles.x >= 0) &&
 | 
			
		||||
            playerCamera.transform.localEulerAngles.y == 0 &&
 | 
			
		||||
            playerCamera.transform.localEulerAngles.z == 0)
 | 
			
		||||
        )
 | 
			
		||||
        {
 | 
			
		||||
            playerCamera.transform.Rotate(new Vector3(rotateSpeed * -Input.GetAxis("Mouse Y") * mouseSensitive * Time.deltaTime, 0, 0));
 | 
			
		||||
        }
 | 
			
		||||
        else if (
 | 
			
		||||
          ((playerCamera.transform.localEulerAngles.x >= 270 && playerCamera.transform.localEulerAngles.x <= 360) &&
 | 
			
		||||
          playerCamera.transform.localEulerAngles.y == 180 &&
 | 
			
		||||
          playerCamera.transform.localEulerAngles.z == 180)
 | 
			
		||||
      )
 | 
			
		||||
        {
 | 
			
		||||
            playerCamera.transform.Rotate(new Vector3(rotateSpeed * (-Input.GetAxis("Mouse Y") > 0 ? -Input.GetAxis("Mouse Y") : 0) * mouseSensitive * Time.deltaTime, 0, 0));
 | 
			
		||||
        }
 | 
			
		||||
        else if (
 | 
			
		||||
        ((playerCamera.transform.localEulerAngles.x <= 90 && playerCamera.transform.localEulerAngles.x >= 0) &&
 | 
			
		||||
        playerCamera.transform.localEulerAngles.y == 180 &&
 | 
			
		||||
        playerCamera.transform.localEulerAngles.z == 180)
 | 
			
		||||
      )
 | 
			
		||||
        {
 | 
			
		||||
            playerCamera.transform.Rotate(new Vector3(rotateSpeed * (-Input.GetAxis("Mouse Y") < 0 ? -Input.GetAxis("Mouse Y") : 0) * mouseSensitive * Time.deltaTime, 0, 0));
 | 
			
		||||
        }
 | 
			
		||||
        else
 | 
			
		||||
        {
 | 
			
		||||
            playerCamera.transform.Rotate(new Vector3(rotateSpeed * -Input.GetAxis("Mouse Y") * mouseSensitive * Time.deltaTime, 0, 0));
 | 
			
		||||
        }
 | 
			
		||||
        rigidBody.freezeRotation = true;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								Assets/Scripts/PlayerManager.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								Assets/Scripts/PlayerManager.cs.meta
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
fileFormatVersion: 2
 | 
			
		||||
guid: b520c64fdc2dfed458e743095a22f69d
 | 
			
		||||
MonoImporter:
 | 
			
		||||
  externalObjects: {}
 | 
			
		||||
  serializedVersion: 2
 | 
			
		||||
  defaultReferences: []
 | 
			
		||||
  executionOrder: 0
 | 
			
		||||
  icon: {instanceID: 0}
 | 
			
		||||
  userData: 
 | 
			
		||||
  assetBundleName: 
 | 
			
		||||
  assetBundleVariant: 
 | 
			
		||||
		Reference in New Issue
	
	Block a user