[Unity3D]Unity3D遊戲開發之MatchTarget實現角色攀爬效果,unity3dmatchtarget

來源:互聯網
上載者:User

[Unity3D]Unity3D遊戲開發之MatchTarget實現角色攀爬效果,unity3dmatchtarget

        大家好,我是秦元培,歡迎大家關注我的部落格,我的部落格地址是blog.csdn.net/qinyuanpei。今天我們來一起學習在Unity3D中如何?角色攀爬效果。

    在RPG遊戲中,某些遊戲情境常常需要玩家沿著牆壁或者梯子攀爬到高處,例如《仙劍奇俠傳三》的九龍坡情境中,玩家需要沿著梯子爬到高處才能收集情境中的物品,而在《古劍奇譚一》中的翻雲寨,玩家則需要爬到頂層才能開啟遊戲裡的機關。那麼今天我們就來利用Mecanim動畫系統中的MatchTarget來實現角色攀爬效果。在正式開始今天的內容前,首先讓我們來瞭解下MatchTarget的具體概念。MatchTarger即匹配目標,是Animator類中的一個方法,該方法可以實現在執行動畫的過程中使角色身體的某個部位與指定位置進行匹配,比如我們在攀爬的過程中,手、腳及身體應該是和牆壁接觸的,那麼這時我們就可以考慮使用這個方法,該方法定義如下:

void MatchTarget (Vector3 matchPosition, Quaternion matchRotation, AvatarTarget targetBodyPart, MatchTargetWeightMask weightMask, float startNormalizedTime,float targetNormalizedTime)

可以看出,在該方法中,我們指定了匹配的位置、角度、身體的具體部分、權重、匹配開始及匹配結束的時間。由此,我們就可以開始今天的內容了,首先我們來建立一個簡單的情境:


在這個情境中,我們希望角色可以沿著牆壁爬到牆上。那麼具體怎麼做呢?首先我們在情境中建立一個空的遊戲體,將其命名為RightHandTarget,它將作為角色在攀爬時右手的一個匹配點,我們將其拖放到合適的位置,然後將其拖放到牆模型下,使其成為它的一個子物體。:


    好了,這樣我們完成了情境部分的搭建和準備工作,接下來我們來製作角色的動畫模型,建立一個Animator Controller,命名為JumpGrab,雙擊開啟Animator視窗,這裡我們只拖入兩個動畫Idle'和JumpUp,這裡我們建立兩個float類型的參數MatchStart、MatchEnd及Bool類型的參數Jump,觸發JumpUp動畫的條件是Jump為True。


其中JumpUp是一個完整的攀爬牆壁的動畫,在這個動畫中,角色首先會伸出右手進行攀爬,因此我們可以將其右手與我們在情境中定義好的RightHandTarget進行匹配,從而保證角色在攀爬的過程中總是緊緊貼著牆壁。好了,現在讓我們來編寫指令碼來將動畫模型和角色關聯起來:

using UnityEngine;using System.Collections;public class TargetMatching : MonoBehaviour{//動畫組件private Animator animator;//右手著力點public Transform RightHand;//是否完成跳躍bool hasJumped = false;AnimatorStateInfo mState;void Start () {//擷取動畫組件animator = GetComponent<Animator>();}void Update () {if (animator){//擷取動畫狀態 mState = animator.GetCurrentAnimatorStateInfo(0);if (Input.GetButton("Fire1")) animator.SetBool("Jump", true);if (mState.IsName("Base Layer.JumpUp") || mState.IsName("Base Layer.FullJump")) {animator.SetBool("Jump", false);//調用MatchTarget方法animator.MatchTarget(RightHand.position, RightHand.rotation, AvatarTarget.RightHand, new MatchTargetWeightMask(new Vector3(1, 1, 1), 0), animator.GetFloat("MatchStart"), animator.GetFloat("MatchEnd"));hasJumped = true;}}}}

   好了,下面我們來看最終的效果吧!


   好了,這就是今天的內容了,希望大家能夠喜歡!



[Unity3D]手機3D遊戲開發:怎使用Unity3D中內建的重力感應

汪 汪海的實驗室 海的實驗室- - 各種圖形學實驗和資料結構實驗以及其他一切瑣碎雜亂的小筆記們都相遇在此齊聚一堂共同守候 0 - - 各種圖形學實驗和資料結構實驗以及其他一切瑣碎雜亂的小筆記們都相遇在此齊聚一堂共同守候 0error(s), 0 warning(s) 這神奇時刻的到來 error(s), 0 warning(s) 這神奇時刻的到來學習Unity指令碼推薦:Unity3D官網索引重力感應在手機遊戲的開發中非常常見。Unity3D本身集合了重力感應的相關內容。一個簡單的JS指令碼示範一下重力感應的使用。CSDNGravity.js://物體的貼圖var round : Texture2D;//物體在螢幕中顯示的X Y座標var x = 0;var y = 0;//物體螢幕顯示的最大 X Y 範圍var cross_x = 0;var cross_y = 0;function Start(){//初始化賦值cross_x = Screen.width - round.width;cross_y = Screen.height - round.height;}function OnGUI () {//整體顯示 x y z 重力感應的重力分量GUI.Label(Rect(0,0,480,100),"position is " + Input.acceleration);//繪製物體GUI.DrawTexture(Rect(x,y,256,256),round);}function Update(){//根據重力分量修改物體的位置這裡乘以30的意思是讓物體移動的快一些x += Input.acceleration.x * 30;y += -Input.acceleration.y * 30;//避免物體超出螢幕if(x < 0){x = 0;}else if(x > cross_x){x = cross_x;}if(y < 0){y = 0;}else if(y > cross_y){y = cross_y;}}這裡的Input是指Unity中的輸入,acceleration便是其重力了,x和y分別代表其重力分量。建立完畢之後只需要添加紋理圖片即可:12
 
新手問點遊戲開發順便問點unity3D的問題

如果你真的想做,就要從零開始,從最基礎的開始。現在網上有幾個視頻說學了U3D倆月就做出看上去不錯的,其實都是外掛程式堆出來的,這種方式看似快成,但基本沒什麼用,只是滿足下虛榮心而已,一個只有情境沒有互動的東西能算什麼呢?
反正我是從零開始的,到現在差不多半年了,感覺最難的是編程,因為以前根本就沒接觸過,而對於模型材質什麼的倒是有點基礎。現在的大部分時間都用在了學習編程上,因為這方面是沒法繞開的,雖然現在有款外掛程式playMaker說是可以沒有編程經驗就可以做遊戲,但感覺並不順手,不過如果不想學編程的話可以試試
而對於編程,unity常用的是Javascript和C#,雖然說javascript易學,但Unity的javascript並不是標準的,而是其特有的UnityScript,但現在並沒有系統的UnityScript教材,所以在我看來並不容易學。但我現在還是在啃UnityScript,因為一開始就是學的這個,想學通學精再換C#。如果你想學的話,建議C#,但我不知道unity的c#和標準c#是不是一樣,這方面你可以再做決定
對於untiy是不是適於個人開發,可以看下 康拓耶夫 的視頻,裡面有unity和其他幾個引擎的對比,其中就有大名鼎鼎的虛幻等引擎
你說用兩年做出來,感覺還是靠譜的,但第一年還是啃基礎吧,而即使基礎打好了,也不要急於做大型的遊戲,做些小遊戲試手。
而對於是不是能做出來,我用unity的原因之一是魔獸爭霸的地圖編輯器,雖然我沒編過地圖,但既然編輯器能做出dota那樣經典的東西,unity難道就不行嗎?順道說一句,知道dota但並沒玩過,澄海倒是玩了一段時間,相對於dota,我更喜歡比如浩方平台上的其他魔獸小遊戲,比如前段時間較火的路人三國,還有乏人問津的兔羊之戰等等。而魔獸爭霸戰役也有高水平的,比如血色使命,可稱國內最高,而開放模式的逆流之戰,可以當做網遊來玩

此外,並不是所有的東西都要自己做,比如模型,在Outfit7的開發中,用到的第一個模型是從某網站買的。而如果某個外掛程式很利於遊戲製作,不妨使用,但最開始還是建議從基礎開始,外掛程式是用來提高效率的
現在國內較活躍的論壇是 unity聖典game.ceeger.com/forum/,前幾天把所有資源設為免費下載了,但昨天115下載出了問題,很多東西不能下載了,殘念
其他的比如天地會、cocochina等都是子版塊,活躍度不是很高,unity3d8也不錯,但很多資源需要較進階別才能下載
對於人物是2D還是3D,只是一種變換,所謂2D,是播放渲染好的一系列圖片,這些圖片大多是用3D模型渲染的,但unity並不適於做2D,不過有相關才外掛程式做

因為是自學,也沒什麼系統的東西告訴你,只能說,這是條很艱難的路,做了決定就去做吧!
說的有些亂,呵呵
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.