2017年3月5日 星期日

[Unity 教學] 第一課 物件移動


影片範例

這堂課希望你能學會:
  • 新增兩個GameObject物件,一個Plane(平面)、一個Capsule(膠囊)
  • 將Capsule(膠囊),重新命名為player
  • 套用Materials(材質)在Plane物件,使它看起來像綠色的
  • 新增一個空物件(Empty),把它命名為main
  • 將main物件,套用main.cs程式碼
  • 透過這端程式碼,你可以使用W鍵跟S鍵控制膠囊上下移動
  • 課堂延伸:使用A鍵跟D鍵讓膠囊左右移動如何?
  • 課堂延伸:
    • 再新增一個膠囊,命名為emeny,並讓他看起來是藍色的
    • 透過I、J、K、L鍵,控制emeny。

main.cs 程式碼:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class main : MonoBehaviour
{

 // Use this for initialization
 void Start ()
 {

  
 }
 
 // Update is called once per frame
 void Update ()
 {
  if (Input.GetKey ("w")) {
   GameObject.Find ("player").transform.position += new Vector3 (0, 0, 0.05f);
  }
  if (Input.GetKey ("s")) {
   GameObject.Find ("player").transform.position += new Vector3 (0, 0, -0.05f);
  }
 }
}

[3/5新增程式碼說明]

  • 寫在void Start(){     }內的在Unity執行時將會跑一次
  • 寫在void Update(){    }內的在Unity執行時將會重複跑  
  • GameObject.Find("XXX"),告訴Unity說找出名叫XXX的物件
    • main.cs裡面中,我們要找出名叫"player"的物件
    • 所以XXX我們是輸入player,也就是GameObject.Find("player")
  • ".transform.position"代表物件的座標。
  • +=表示對既有數值做加減,這個下次上課我會在說明詳細些。
    • 也會慢慢把這個網頁內容補整齊些。
  • .transform.position是使用3軸座標(三維向量),所以我們使用 new Vector3(X,Y,Z)
    • 如果我們想要往Y軸移動0.5f,其他軸不動則輸入:
    • GameObject.Find("XXX").transform.position+=new Vector3(0,0,0.5f);
  • if是程式判斷式,if(XXX){GGG}代表當XXX裡面的事情發生了,才執行GGG的內容。
  • 所以if (Input.GetKey ("s")) ,代表當偵測到使用者輸入s鍵時,執行{ }的內容。


最後結果檔案下載: Download [2021.10.30 修正連結]
[2017.03.12] 太驚訝了...winrar居然不支援7z的壓縮檔案,只好改成zip


有任何問題再私下敲我囉
sakmor@gmail.com

12 則留言:

  1. 對新手是很好的學習.我是新手

    回覆刪除
    回覆
    1. 寫遊戲真的很好玩~~對有任何問題歡迎提出唷!

      刪除
  2. 太感謝你了教學了!!!
    好有趣好有成就感(因為本來就有一點c#的底子 + 都在玩winform)
    感謝感謝!!!

    回覆刪除
    回覆
    1. 哇哈哈哈
      謝謝你的鼓勵,讓我知道這個Bloger是有人在看的

      其實這教學系列還有一篇沒有更新上去
      我再找時間放出來吧

      刪除
  3. 加油,我從高中時就一直對寫Game很有興趣,當時自學C Language半年就寫了個時下最流行的貪食蛇。現在進業界10年了,工作和寫Game無關,一直沒有目標,最近想寫個育教遊戲給小孩,希望您會一直維護這個Blog,我會一直follow您,加油!

    回覆刪除
    回覆
    1. 很感動呢~謝謝你的鼓勵。

      我很幸運的在畢業後就一直待在遊戲產,我覺得作遊戲真的是非常好玩的一件事情。
      斷斷續續製作的自己的獨立遊戲當中。

      刪除
  4. 希望大學課餘能把所有的文章看完!!

    回覆刪除
  5. 下載下來卻不知道怎麼開....

    回覆刪除
    回覆
    1. https://sammaru.blogspot.com/2019/08/blog-post.html
      我新增教學囉

      刪除
  6. 請問我做的敵人用transform.position+=new Vector3這個移動
    但為什麼會穿過地形不會沿著地形高低起伏移動 請問要怎麼解決

    回覆刪除
    回覆
    1. 因為你的地形、人物沒有放碰撞範圍 (collision) 還有剛體 (rigidbody) 的組件
      可參考:https://youtu.be/xv4Xt-B5EFc

      刪除