Unity键盘WASD实现物体移动

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

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

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);
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Unity3D实现物体旋转缩放移动效果

    本文实例为大家分享了Unity3D实现物体旋转缩放移动的具体代码,供大家参考,具体内容如下 由于项目运行在安卓上,运用到了插件,比较麻烦.你们可以在触发条件上进行修改,不用插件也可以. 1.下载FingerGestures 插件 下载地址 点击打开链接 2.导入插件,创建场景 将预设Finger Gestures Initializer 拖拽到 Hierarchy 视图中 3.添加脚本,拖拽到摄像机上.创建一个方块拖拽到脚本target 属性上. using UnityEngine; using

  • Unity3D实现虚拟按钮控制人物移动效果

    本文为大家分享了Unity3D实现虚拟按钮控制人物移动的具体代码,供大家参考,具体内容如下 创建Image的UI组件,在Image下新建一个Button按钮.在Image 和Button上拖进Sprite图片 在Button按钮上挂载该脚本 using System.Collections; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; public class MyJoystick : Mono

  • Unity调取移动端的麦克风进行录音并播放

    本文实例为大家分享了Unity调取移动端的麦克风进行录音并播放的具体代码,供大家参考,具体内容如下 1.对MicroPhone类的理解 对麦克风的调用在Unity里主要是用到了MicroPhone这个类,此类里面有几个方法可以方便我们实现功能 2.代码演示 #region 模块信息 // ********************************************************************** // Copyright (C) 2018 Blazors // P

  • Unity3D实现控制摄像机移动

    本文实例为大家分享了Unity3D实现控制摄像机移动的具体代码,供大家参考,具体内容如下 最近公司的几个项目开发内容基本相同,很多脚本直接复制过来就可以拼接项目.之前一直是代码爱好者,能自己敲的绝对不去复制粘贴.但是开发速度确实是被耽误了,所以接下来打算把开发中常用的脚本都发到博客上.自己需要的时候直接拿来.也希望能帮到你们. unity编辑器中按住鼠标右键,在通过控制键盘的wasdqe键可以自由控制视野. 下面就是实现操作的代码: using System.Collections; using

  • Unity实现物体左右移动效果

    本文实例为大家分享了Unity实现物体左右移动效果的具体代码,供大家参考,具体内容如下 效果如下 代码: using UnityEngine; using System.Collections; //Add this script to the platform you want to move. //左右移动的平台 public class MovingPlatform : MonoBehaviour { //Platform movement speed.平台移动速度 public floa

  • Unity移动端的复制要这么写示例代码

    前言 Unity官网提供了详尽的文档和丰富的教学视频,昨天跟着视频做了一个简单的3d游戏"roll-a-ball".游戏涉及了许多Unity的基本知识,用来入门很不错. 本文主要给大家了关于Unity移动端的复制的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 游戏上线很久了,有些玩家慢慢就流失了,为了让刚流失的玩家再度回归所以做了召回功能!如果一个200级的玩家10天没上线且成功召回的,就会给予召回玩家丰厚的奖励! Q:那如何召回这个流失的玩家呢? A:召回

  • Unity3D控件Easytouch控制主角移动

    本文实例为大家分享了Unity3D控件Easytouch控制主角移动的具体代码,供大家参考,具体内容如下 开发步骤: 1.导入Charactor Controller资源包: 2.导入Easy Touch 3.1.0的资源包: 3.创建一个人物模型: 4.新建一个Plane作为地板. 5.新建一个joystick,添加步骤如下图所示: 6.设置摇杆的相关属性: 注:如图中属性一定要设置好,不然的话会出现摇杆没有反应的情况!!! 7.为主角(即需要Easytouch摇杆控制移动的模型)新建一个脚本

  • Unity键盘WASD实现物体移动

    本文实例为大家分享了Unity键盘WASD实现物体移动的具体代码,供大家参考,具体内容如下 1首先在场景中建立一个Capsule,将主摄像机拖到其物体下. 2.将脚本挂在Capsule物体下,WASD 控制移动方向,空格延Y轴向上移动,F延Y轴向下移动 using System.Collections; using System.Collections.Generic; using UnityEngine; public class MoveCam : MonoBehaviour { priva

  • Unity中Instantiate实例化物体卡顿问题的解决

    本文实例为大家分享了Unity中Instantiate实例化物体卡顿问题的解决方法,供大家参考,具体内容如下 一.前言 当在执行多次Instantiate实例化物体时,会卡顿严重甚至在移动端会导致程序崩溃 因为Instantiate会产生大量的GC,使CPU过高,导致崩溃 下面是一段测试代码:当我们按下按键时实例化100000个预制体 using UnityEngine; public class Test : MonoBehaviour { public GameObject prefab;

  • Unity使用鼠标旋转物体效果

    本文实例为大家分享了Unity使用鼠标旋转物体效果的具体代码,供大家参考,具体内容如下 了解完基础知识后,然我们来做个小程序练习一下 1.在Main Camera下新建一个Cube 然后调整一下Cube的位置,把他放置在相机前方 2.给Cube挂载脚本 using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeControlScript : MonoBehavio

  • Unity通过UGUI的Slider调整物体颜色

    本文实例为大家分享了Unity通过Slider调整物体颜色的具体代码,供大家参考,具体内容如下 首先我们创建三个Slider 和一个Cube,为了方便查看,我把Slider下面的Handle分别改变颜色并和名字一一对应: 然后我们把脚本放在Cube上,并且把三个Slider分别 拖进去 具体脚本如下: using UnityEngine; using System.Collections; using UnityEngine.UI; public class SliderColorHyp : M

  • unity 实现摄像机绕某点旋转一周

    在Update函数中执行: if (turnAround) { playerCamera.RotateAround(transform.localPosition, transform.up, Time.deltaTime * rotateSpeed); degree += Time.deltaTime * rotateSpeed; if (degree >= 360) { turnAround = false; degree = 0; } } 补充:unity 摄像机围绕某个物体进行旋转放大缩

  • Unity技术手册之Slider滑动器使用实例详解

    目录 实践过程 Slider其他参数 实践过程 为了方便更多的人(新手)看明白,使用的汉字,真实项目尽量使用英文规则昂. 该控件通常可以用于技能冷却或者人物血条或者游戏里面设置功能的各种滑动条. 我们在Hierarchy窗口中右键(UI-Slider)创建一个滑动条(如下图).会发现有五个子物体,其实主要的是Background和Fill以及Handle,另外两个带Area的是为了做宽高适配,一直填充满父物体Slider. Background便是默认的滑动条底图或底色.Fill是滑动进度的填充

  • C#截图程序类似腾讯QQ截图实现代码

    最近把以前制作的截图程序重新写了一下动了一个大手术 高质量仿照的TX的截图程序 先看几个效果图 拖动过程中显示当前鼠标下一小块的图像信息 尺寸.颜色信息的  注意 这里颜色是用的ARGB 本来截图的话RGB就够了 可是我把那个做成了控件 不仅截图可用 其他地方也可用作图像的选取 具体看代码就知道了 并且我还加了一个可以截图的同时把鼠标也捕获下来 现在看到的是我自己的截图程序 那个工具条啥的 是从TX的截图程序上面拔下来的 上面是几个工具条上的工具的三种粗细型号的展示 看到的蓝色的粗的刷笔 本来想

  • Unity实现虚拟键盘

    本文实例为大家分享了Unity实现虚拟键盘的具体代码,供大家参考,具体内容如下 这是一个网上找的插件,自己改了点东西,方便使用在项目中.暂时不适用中文输入,中文输入可能得调出系统输入法,项目不需要就没去研究了,大伙有兴趣可以研究研究. 包含两个类,一个是虚拟键盘类,还一个是文本框输入类.下面直接上代码: using UnityEngine; using System.Collections.Generic; /* * On Screen Keyboard * By Richard Taylor,

  • unity实现鼠标拖住3D物体

    本文实例为大家分享了unity实现鼠标拖住3D物体的具体代码,供大家参考,具体内容如下 把该脚本直接挂在要拖拽的物体上即可 using System.Collections; using System.Collections.Generic; using UnityEngine; public class ModelDrages : MonoBehaviour { //发射射线的摄像机 private Camera cam; //射线碰撞的物体 private GameObject go; //

随机推荐