1. 程式人生 > >Unity3d 控制角色移動 鍵盤按鍵與虛擬搖桿

Unity3d 控制角色移動 鍵盤按鍵與虛擬搖桿

先上角色移動指令碼

using UnityEngine;
using System.Collections;

public class PlayerMove:MonoBehaviour
{
   private CharacterController cc;
   public float speed=4;

   void Awake()
   {
       cc=this.GetComponent<CharacterController>();
   }

   void Update()
   {
      float h=Input.GetAxis("Horizontal"
); float v=Input.GetAxis("Vertical"); if(Mathf.Abs(h) >0.1f || Maathf.Abs(v> >0.1f) { Vector3 targetDir = new Vector3(h,0,v); transform.LookAt(targetDirr +transform.position); cc.SimpleMove(transform.forward *speed); } } }

然後是虛擬搖桿的程式碼

using
UnityEngine; using System.Collections; public class Joystick:MonoBehaviour { private bool isPress =false; private Transform button; public static float h=0; public static float v=0; void Awake() { button=transform.Find("Button"); } //當按鍵按鈕的時候觸發 void OnPress(bool
isPress) { this.isPress=isPress; if(isPress == false) button.localPosition=Vector3.zero; v=0; h=0; } void Update() { if(isPress) { Vector2 touchPos=UICamera.lastTouchPosition; touchPos -=new Vector2(91,91); float distance =Vector2.Distance(Vector2.zero,touchPos); if(distance >73) { touchPos=touchPos.normalized *73; button.localPosition =touchPos; } else { button.localPositon =touchPos; } h=touchPos.x /73; v=touchPos.y /73; } } }

最後是鍵盤和虛擬搖桿的結合
其實很簡單 只需要修改這一段程式碼就行了

void Update()
   {
      float h=Input.GetAxis("Horizontal");
      float v=Input.GetAxis("Vertical");

      if(Mathf.Abs(h) >0.1f || Maathf.Abs(v> >0.1f)
      {
          Vector3 targetDir = new Vector3(h,0,v);
          transform.LookAt(targetDirr +transform.position);
          cc.SimpleMove(transform.forward *speed);
      }
   }

修改成

void Update()
   {
      float h=Input.GetAxis("Horizontal");
      float v=Input.GetAxis("Vertical");

      if(Joystick.h != 0 || Joystick.v !=0)
      {
          h=Joystick.h;
          v=Joystick.v;
      } 

      if(Mathf.Abs(h) >0.1f || Maathf.Abs(v> >0.1f)
      {
          Vector3 targetDir = new Vector3(h,0,v);
          transform.LookAt(targetDirr +transform.position);
          cc.SimpleMove(transform.forward *speed);
      }
   }

相關推薦

Unity3d 控制角色移動 鍵盤按鍵虛擬

先上角色移動指令碼 using UnityEngine; using System.Collections; public class PlayerMove:MonoBehaviour

Unity3D之滑鼠控制角色移動奔跑示例

最新補充。          一般在做滑鼠選擇時是從攝像機向目標點發送一條射線,然後取得射線與物件相交的點來計算3D目標點。後來在開發中發現了一個問題(射線被別的物件擋住了),就是如果主角的前面有別的遊戲物件擋著。此時如果使用射線的原理,滑鼠選擇被檔的物件,這樣主角就

Unity3d虛擬控制物體移動及旋轉

   王者榮耀在現在看來可能已經成為不少人每天都會開啟一款軟體,角色的控制及其操作方式簡單,使其短時間內獲得了大量的玩家喜愛和追捧。    可以很明顯的看到王者榮耀的操作方式就是虛擬搖桿,可以控制人物的的移動,及其旋轉,或者是控制技能的釋放方向。此篇部落格就unity中如何實

Unity3D-控制角色受傷的時候身體顏色變化的代碼》

oid unit float unity date 需要 平滑 one mesh //思路 首先獲得SkinnedMeshRenderer組件 然後在初始化這個組件 接著在主角受傷的時候改變其顏色 //1.聲明SkinnedMeshRenderer private Skin

unity 實現滑鼠控制角色移動角色頭部的血條顯示

在很多專案中,都有這樣的場景就是滑鼠點選一個位置,滑鼠所控制的玩家就會移動到指定的位置處,還有就是在戰鬥過程中任務頭上血條的UI跟隨顯示,今天就講一下如何實現通過滑鼠控制人物移動和人物頭部血條的顯示。 一、首先是搭建簡易的3D場景 這裡使用Terrain地形元件,安裝官方

Unity3D控制人物移動跳躍,處理CharacterController的isGrounded總是返回false問題

在Unity3D中控制人物移動的方法很多,可以使用transform.Translate方法,但為了不穿越其他物體,需要使用剛體rigidbody。還可以使用角色控制器,角色控制器是自帶剛體Rigid

Unity3D控制物體移動

在遊戲開發中,遊戲物體的移動是最基本的,如果連物體都移動不起來,那就不用說玩遊戲了。 下面記錄了自己在開發中實現的物體移動,不同專案可能有不同的物體移動實現,也有很多種不同的物體移動實現,文章會持續更新。 1.rigidbody.MovePosition()控制物體上下左

Android 監聽軟鍵盤按鍵改變軟鍵盤右下角按鍵樣式

android:singleline=”true” android:imeoptions=”actionSearch” 一定要加singleline=”true”!!! actionN

Unity3D AI角色移動和自動跟隨

AI角色按照一定的移動邏輯進行移動時,AI邏輯處理角色需要移動的位置,還需要移動邏輯實時處理角色的當前速度和角度。官方的示例中角色的移動是通過設定速度之後,依靠動畫的位移來實現的,所以程式碼中只需要設定角色的速度和角度即可。Animator控制元件中的Apply

Unity ——UGUI 通過控制角色移動

  測試結束後,大家就會對這些介面方法有一些初步的瞭解。using UnityEngine; using UnityEngine.EventSystems; // UGUI提供了一些用來操作控制元件的一些方法, 這些方法是以回撥的形式提供的 // 通過介面回撥來實現的 /* * IPointerEnter

unity3d控制camera移動旋轉

    第一次寫部落格,剛開始學習unity。把近期所學記錄下來~     最近做的demo是控制一個攝像頭在一個室內的場景中自由移動,類似於第一人稱視角。     1.用滑鼠和鍵盤控制 using UnityEngine; using System.Collections

Unity3d 基於NGUI的虛擬實現

實現效果預覽 C#程式碼 實現: 使用NGUI新增虛擬搖桿背景和其子物體按鈕,為按鈕Attach boxcollider和ButtionScript。為按鈕新增如下指令碼: 注意:其中的靜態屬性可以在控制物體移動的程式碼中訪問用於控制。

Unity3d使用UGUI開發原生虛擬

在Unity3d中開發虛擬搖桿方式有比較多,可以使用EasyTouch、FairyGUI等外掛來開發。本文給大家介紹使用Unity3d的原生UGUI來開發出自己的虛擬搖桿,這樣可以減少遊戲資源包的大小。先展示下效果圖:現在開發我們的開發建立一個Image1,並且在Image1

unity3d 虛擬 ugui

網上找了好多都嫌麻煩,谷歌了一下,完美解決。 需要先建立 Canvas,如下: 程式碼拖拽到 backImage裡: JoyStick.cs using System.Collections; using System.Collec

Unity3D學習筆記(二十三):事件接口、虛擬、層級管理和背包系統

ram veh ces 跟隨鼠標 style 組件 屏幕 向上 grid 事件接口 IDragHandler(常用):鼠標按下拖動時執行(只要鼠標在拖動就一直執行) IDropHandler:對象拖動結束時,如果鼠標在物體的範圍內,執行一次(依賴於IDragHandler存

QT 模仿Android遊戲中虛擬(3)讓圓隨著角度移動

接著上一篇講起,我們需要在滑鼠離開圓的範圍的時候,讓圓跟著滑鼠與圓心的角度移動,那麼我們來看看我們的已知量是什麼: 1、圓心座標 2、圓的半徑 3、當前滑鼠的座標 運用一下我們的中學知識,根據(1、3

cocos2D 虛擬Joystick功能實現

皮膚 @implementation InputLayer - (id)init { if(self = [super init]) { winSize = [[CCDirector sharedDirector] winSize];

虛擬的修改

poi 如果 [1] 運行時 inpu tex div 這樣的 通過 上次的代碼運行時會有bug:報錯 ArgumentException: Index out of bounds. 即Input.GetTouch()函數進行了越界訪問。於是上網看了看,發現Touc

Unity3d_UGUI虛擬(簡易)

       之前的專案中有用虛擬搖桿來操縱角色移動,但是之前使用的是EasyTouch,屬於NGUI下的一個外掛,但是本身專案是基於UGUI的,覺得這樣摻雜在一起有些不倫不類,就自己用UGUI做了一個簡易的虛擬搖桿(可以實現給角色移動指令碼發出搖桿的偏移引數類似於Easy

Unity3d進階學習(1)--遊戲

實現原理: 它的原理就是利用ScrollRect來限制搖塊的搖動區域,但是ScrollRect是矩形的,我們的搖桿的搖動區域應該是個圓形的才對。所以順著這個思路我們可以寫個類繼承ScrollRect