Unity键盘WASD实现物体移动

作者:weixin_38527697 时间:2021-06-14 13:46:21 

本文实例为大家分享了Unity键盘WASD实现物体移动的具体代码,供大家参考,具体内容如下

1首先在场景中建立一个Capsule,将主摄像机拖到其物体下。

Unity键盘WASD实现物体移动

2.将脚本挂在Capsule物体下,WASD 控制移动方向,空格延Y轴向上移动,F延Y轴向下移动


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MoveCam : MonoBehaviour
{
private Vector3 m_camRot;
private Transform m_camTransform;//摄像机Transform
private Transform m_transform;//摄像机父物体Transform
public float m_movSpeed=10;//移动系数
public float m_rotateSpeed=1;//旋转系数
private void Start()
{
m_camTransform = Camera.main.transform;
m_transform = GetComponent<Transform>();
}
private void Update()
{
Control();
}
void Control()
{
if (Input.GetMouseButton(0))
{
 //获取鼠标移动距离
 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;
}
else if (Input.GetKey(KeyCode.S))//按键盘S向下移动
{
 zm -= m_movSpeed * Time.deltaTime;
}

if (Input.GetKey(KeyCode.A))//按键盘A向左移动
{
 xm -= m_movSpeed * Time.deltaTime;
}
else if (Input.GetKey(KeyCode.D))//按键盘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);
}
}

来源:https://blog.csdn.net/weixin_38527697/article/details/79675188

标签:Unity,键盘,物体移动
0
投稿

猜你喜欢

  • C# 设计模式系列教程-模板方法模式

    2022-03-17 18:00:15
  • java POI解析Excel 之数据转换公用方法(推荐)

    2023-06-10 11:04:53
  • datatable生成excel和excel插入图片示例详解

    2022-06-18 21:48:38
  • C语言实现两个矩阵相乘

    2023-07-22 12:41:20
  • C#使用NPOI实现Excel导入导出功能

    2022-11-01 22:36:19
  • 关于MyBatis中Mapper XML热加载优化

    2023-05-20 01:49:34
  • 用Java实现24点游戏

    2022-07-18 20:56:14
  • C#波形图控件制作示例程序

    2022-02-24 21:50:40
  • C#中DataTable排序、检索、合并等操作实例

    2022-08-22 04:58:03
  • android 简单图片动画播放的实例代码

    2023-11-07 12:39:01
  • Java中锁的实现和内存语义浅析

    2021-06-04 01:09:49
  • Kotlin协程到底是如何切换线程的

    2022-03-03 13:52:39
  • C#的TimeSpan案例详解

    2023-11-20 11:34:52
  • java中使用zxing批量生成二维码立牌

    2021-12-31 04:31:03
  • SpringMVC + servlet3.0 文件上传的配置和实现代码

    2023-08-08 16:42:43
  • 深入聊一聊JDK中的Map和Set

    2023-10-21 15:54:20
  • javax.mail.SendFailedException: Sending failed问题原因

    2021-08-07 20:00:57
  • Java 8新特性方法引用详细介绍

    2023-06-22 08:31:50
  • java使用spring实现读写分离的示例代码

    2023-03-03 06:44:34
  • C#获取进程和对进程的操作

    2021-07-14 19:50:35
  • asp之家 软件编程 m.aspxhome.com