1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【Unity】第一人称实现键盘移动WASD

【Unity】第一人称实现键盘移动WASD

时间:2018-11-06 11:10:50

相关推荐

【Unity】第一人称实现键盘移动WASD

【Unity】第一人称实现键盘移动WASD

背景:开发影院场景

环境:Unity.3

功能:WASD键实现移动、鼠标左右平滑实现转向

代码:挂载在相机的父物体上(好像是因为相机本身不支持移动?如有误望指正)

using System.Collections;using System.Collections.Generic;using UnityEngine;public class MoveCam : MonoBehaviour {private Vector3 m_camRot;private Transform m_camTransform; //摄像机Transformprivate Transform m_transform;//摄像机父物体Transformpublic float m_movSpeed=10; //移动系数public float m_rotateSpeed=10; //旋转系数private void Start() {m_camTransform = Camera.main.transform;m_transform = GetComponent<Transform>();}private void Update() {Control();}void Control() {//获取鼠标移动距离float rh = Input.GetAxis("Mouse X");float rv = Input.GetAxis("Mouse Y");// 旋转摄像机m_camRot.x -= rv * m_rotateSpeed;m_camRot.y += rh * m_rotateSpeed;m_camTransform.eulerAngles = m_camRot;// 使主角的面向方向与摄像机一致Vector3 camrot = m_camTransform.eulerAngles;camrot.x = 0; camrot.z = 0;m_transform.eulerAngles = camrot;// 定义3个值控制移动float xm = 0, ym = 0, zm = 0;//按键盘W向上移动if (Input.GetKey(KeyCode.W)) {zm += m_movSpeed * Time.deltaTime;}//按键盘S向下移动else if (Input.GetKey(KeyCode.S)) {zm -= m_movSpeed * Time.deltaTime;}//按键盘A向左移动if (Input.GetKey(KeyCode.A)) {xm -= m_movSpeed * Time.deltaTime;}//按键盘D向右移动else if (Input.GetKey(KeyCode.D)) {xm += m_movSpeed * Time.deltaTime;}if (Input.GetKey(KeyCode.Space) && m_transform.position.y <= 3) {ym += m_movSpeed * Time.deltaTime;}if (Input.GetKey(KeyCode.F) && m_transform.position.y >= 1) {ym -= m_movSpeed * Time.deltaTime;}m_transform.Translate(new Vector3(xm,ym,zm), Space.Self);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。