Unity鍵盤WASD實現(xiàn)物體移動
本文實例為大家分享了Unity鍵盤WASD實現(xiàn)物體移動的具體代碼,供大家參考,具體內(nèi)容如下
1首先在場景中建立一個Capsule,將主攝像機拖到其物體下。
2.將腳本掛在Capsule物體下,WASD 控制移動方向,空格延Y軸向上移動,F(xiàn)延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;//移動系數(shù)
 public float m_rotateSpeed=1;//旋轉(zhuǎn)系數(shù)
 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");
 
   // 旋轉(zhuǎn)攝像機
   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);
 }
}
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持我們。
欄 目:C#教程
本文地址:http://www.jygsgssxh.com/a1/C_jiaocheng/4904.html
您可能感興趣的文章
- 01-10Unity3d獲取系統(tǒng)時間
 - 01-10Unity3D獲取當前鍵盤按鍵及Unity3D鼠標、鍵盤的基本操作
 - 01-10Unity UGUI教程之實現(xiàn)滑頁效果
 - 01-10C#使用Protocol Buffer(ProtoBuf)進行Unity中的Socket通信
 - 01-10C#在Unity游戲開發(fā)中進行多線程編程的方法
 - 01-10C#實現(xiàn)可捕獲幾乎所有鍵盤鼠標事件的鉤子類完整實例
 - 01-10C# winform 模擬鍵盤輸入自動接入訪問網(wǎng)絡的實例
 - 01-10C#中Socket與Unity相結(jié)合示例代碼
 - 01-10C#實現(xiàn)JSON解析器MojoUnityJson功能(簡單且高效)
 - 01-10Unity中C#和Java的相互調(diào)用實例代碼
 


閱讀排行
本欄相關
- 01-10C#通過反射獲取當前工程中所有窗體并
 - 01-10關于ASP網(wǎng)頁無法打開的解決方案
 - 01-10WinForm限制窗體不能移到屏幕外的方法
 - 01-10WinForm繪制圓角的方法
 - 01-10C#實現(xiàn)txt定位指定行完整實例
 - 01-10WinForm實現(xiàn)仿視頻播放器左下角滾動新
 - 01-10C#停止線程的方法
 - 01-10C#實現(xiàn)清空回收站的方法
 - 01-10C#通過重寫Panel改變邊框顏色與寬度的
 - 01-10C#實現(xiàn)讀取注冊表監(jiān)控當前操作系統(tǒng)已
 
隨機閱讀
- 01-10C#中split用法實例總結(jié)
 - 01-10使用C語言求解撲克牌的順子及n個骰子
 - 01-11ajax實現(xiàn)頁面的局部加載
 - 08-05織夢dedecms什么時候用欄目交叉功能?
 - 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
 - 01-10SublimeText編譯C開發(fā)環(huán)境設置
 - 01-10delphi制作wav文件的方法
 - 04-02jquery與jsp,用jquery
 - 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
 - 08-05DEDE織夢data目錄下的sessions文件夾有什
 


