天天看點

2019年7月15日 學習日志

U3d的初步使用

**

上午

**

也是對C#的一個複習,在script中又将以前的知識重制了一遍。比較基礎的就是U3d的快捷鍵,和拖動方式,其拖動快捷鍵就像英雄聯盟一樣,都是qwer。且在建立自己的類後,要符合繼承關系,這就很好的契合了U3d中有了屬于自己的對象(類)後,也可能擁有隸屬于自己的類,即繼承。從一個類到其他類的派生能讓一個項目更豐富,有利于類的建立和擴充,角色屬性和類型的多元化。主要在于方法的繼承,而不是資料的繼承。(繼承通過增強一緻性來減少子產品間的接口和界面,大大增加了程式的易維護性。)在學過程中也有比較讓人陌生的變量

就像var:

C# 中的var關鍵字
var 是3.5新出的一個定義變量的類型 其實也就是弱化類型的定義 VAR可代替任何類型 編譯器會根據上下文來判斷你到底是想用什麼類型的    至于什麼情況下用到VAR 我想就是你無法确定自己将用的是什麼類型 就可以使用VAR
           

類似 OBJECT 但是效率比OBJECT高點。 或者通俗的講:

var可以了解為匿名類型,我們可以認為它是一個聲明變量的占位符。它主要用于在聲明變量時,無法确定資料類型時使用。

使用var定義變量時有以下四個特點:

  1. 必須在定義時初始化。也就是必須是var s = “abcd”形式,而不能是如下形式: var s; s = “abcd”;
  2. 一但初始化完成,就不能再給變量賦與初始化值類型不同的值了。(類似const)
  3. var要求是局部變量。
  4. 使用var定義變量和object不同,它在效率上和使用強類型方式定義變量完全一樣。

還有在實踐中與var搭配的"Input"函數—>“Input.GetAxis(“Horizontal”)”.其中input函數是接收輸入量的函數,其中包括滑鼠的點選和鍵盤的敲打(特定鍵位),這裡的GetAxis是對對象的方向進行一個定義,而“Horizontal”代表的就是水準,垂直是“Vertical”。還有同命名空間内對于類的調用,而剛才的"Input.GetAxis()"方法就是用于接收值輸入同命名空間不同類的函數後得到相應的回報。“Input.GetKeyDown(KeyCode.Space)” 這段代碼也是運用了Input中的函數,并且目标是得到是否按下空格這個事件。“Input.GetKeyDown(KeyCode.G)”也一樣,不過是得到了G鍵是否被按下。當然在if函數内判斷後,如果為真也要進行相應的事件,如按下空格之後跳起來,按到G鍵後要抓住物體。到這裡有不一樣的感覺嗷,因為不隻是程式的邏輯了,還有對于類生命體的生存事件的周遊。如果一個遊戲合格那對于一個角色的事件構造一定是全面或者抽象的(憤怒的小鳥,賊抽象),是個藝術,哈哈。

**

下午

**

上午就是簡單的建構函數,并沒有涉及到遊戲的運作,趁着還有一些時間我要對我下午的學習做一下總結。本次做的遊戲較為簡單,對于建立的三個腳本,一個是專門給玩家用的“Character”,一個是玩家和敵人都用的“PlayerCharacter”,也有要在晚上學習的"PlayerCtroller"。以前學習過C#中的繼承可以繼承方法進而擴充,但Componment函數在一個腳本中尋找另一個腳本 建構另一種關系,就像角色即需要角色的控制也需要角色動畫的支援。在角色運動的時候也許要時刻更新屬性,就像橫闆遊戲,z軸是沒有用的,是以要設定z軸速度為0.動畫的更新也和速度和是否在地闆上有關系。重力用速度來表現,是以在地闆上是沒有重力操縱的縱向速度,要是不在地闆就要受重力影響。

//移動

pendingVelocity.z = 0f;

cc.Move(pendingVelocity * Time.deltaTime);

//更新動畫

animator.SetFloat(“Speed”, cc.velocity.magnitude);

animator.SetBool(“Grounded”, cc.isGrounded);

//更新重力

pendingVelocity.y += cc.isGrounded ? 0f : Physics.gravity.y * 10f * Time.deltaTime;

這裡直接對于cc的調用是因為之前利用“GetConponent”來得到的 PlayerCtroller 腳本中的方法。這和繼承又不一樣。

public void Jump()

{

if (cc.isGrounded)

{

pendingVelocity.y = jumpPower;

}

}

這個是給了物體一個起跳速度,而速度的更新就需要上面的更新重力,是環環相扣的。

還有比較重要的就是在2D遊戲中不要把遊戲角色的坐标設計的過于離譜兒,不然會飛流直下三千尺。

在插入動畫的時候涉及到在不在地上的邏輯問題,這個也是用來對Blend Tree設計的重要因素。不在地闆,是以處于跳躍狀态,箭頭從blend tree指向jump,反之箭頭從jump指回來。不要忘了jump的param屬性要和blendtree中對應。

**

晚上

**

惡心len!!!

!!!我U3d基礎本來就不好,現在我編的大兒子落地癫痫病,小兒子小兒麻痹。等着!!!我先 去學學簡單的,過幾天我再戰這個gdx.