行動遊戲程式設計

課程介紹

  • 先修課程為3D遊戲引擎
  • 本課程目標針對手遊、網路資料庫、多人連線、手機攝影機控制、Google Map API、擴增實境程式設計為目標
  • 學生自備器材Android平板或手機
  • 環境安裝教學影片

教案

CV12 電子鐘範例

梁詠琳電子鐘下載

翻牌配對遊戲

基礎篇生命靈數

第一次接觸Unity 3D遊戲引擎
  • 影片學習請前往>>

H01直升機旋轉動畫

H02 直升機由上而下前進使用Animation

H03 直升機由上而下前進使用Script

H04 隨機產生直升機出發起點

H05 設定Prefab

H06 使用Prefab製作兩台直升機

H07 依照生存時間或飛行距離自動毀滅直升機

  • 專案下載
  • 設定速度、生存時間、最大飛行距離
  • public int speed = 1;
    public double lifeTime = 5.0f;
    public double dist = 10.0f;
  • 每次進入update的時間不一,使用deltaTime可以確保飛行速度維持一致
  • y -= speed* Time.deltaTime;
  • 當Time out或飛行距離已達上限,就自動銷毀自己
  • dist -= speed * Time.deltaTime;
    if (Time.time > spawnTime + lifeTime || dist < 0) Destroy(this.gameObject);

H08 新增一個FirePoint連續發射直升機

  • 專案下載
  • 執行檔
  • SpawnHelicopter.txt
  • 將Helicopter Prefab連接至bulletPrefab
    • public GameObject bulletPrefab;
  • 引入FirePoint發射點物件
    • public Transform spawnPoint;
  • 由count與frequence控制子彈發射速度
    • private int count = 0;
      private double frequence = 0.5f;
  • 當產生一個子彈go
    • private GameObject go;;

H09 變大與縮小

  • 專案下載
  • ScaleChange.txt
  • float scale;
    Vector3 scaleChange;
  • scale = Random.Range(0.5f, 2.0f);
    scaleChange = new Vector3(1.0f, 1.0f, 0.0f) * scale;
    this.transform.localScale = scaleChange;

M01 滑鼠游標位置

  • 滑鼠座標顯示執行檔
  • 專案下載
  • MousePos.txt
  • 取得文字欄位
  • public GameObject MouseX;
  • Text txtMX;
  • txtMX = MouseX.gameObject.GetComponent<Text>();
  • 取得滑鼠座標
  • Vector3 mPos = Input.mousePosition;
  • 顯示座標
  • txtMX.text = mPos.x.ToString();

M02 滑鼠左鍵按下顯示游標位置

M03 匯出Helicopter & 匯入新專案中

M04 射擊標的物

  • 執行檔
  • ShootObject.unitypackage
  • Shoot.txt
  • 遊戲物件需AddComponent cube collider
  • 新增tag
  • 物件套上tag
  • 由攝影機射向滑鼠游標位置射出射線
  • Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
  • 射出距離100內
  • RaycastHit hit;
    if (Physics.Raycast(ray, out hit, 100))
  • Debug.DrawLine(ray.origin, hit.point);
    Debug.Log(hit.transform.tag);
    txtMsg.text = hit.transform.tag;

M05 射除標的物與加入射擊聲

  • 執行檔
  • ShootOutObject.unitypackage
  • ShootOutObject.txt
  • AudioClip 存放音效檔
  • public AudioClip HitSound;
  • 遊戲物件需加入AudioSource
  • private AudioSource audioSource;
  • audioSource = GetComponent<AudioSource>();
  • 播放射擊音效
  • audioSource.PlayOneShot(HitSound);
  • 消滅偵測到的遊戲物件
  • Destroy(hit.transform.gameObject);

家庭作業02 五隻敵機隨機偏移來襲

期中考 戰機發射砲火 滑鼠點選左右移動戰機

SpaceWar01 Drag Fighter

  • 執行檔
  • DragFighter.unitypackage
  • DragFighter.txt
  • 加入plane作為bakcground接受滑鼠點擊
  • if (Input.GetMouseButtonDown(0))
  • Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
    RaycastHit hit;
    if (Physics.Raycast(ray, out hit, 100))
  • if (hit.transform.tag == "Background")
  • px = hit.point.x;
    py = hit.point.y;
    this.transform.position = new Vector3(px, py, 0);

SpaceWar02 Fighter Fire

SpaceWar03 Mouse Hit Enemy

  • 執行檔
  • HitEnemy.unitypackage
  • EnemyHitted.txt
  • 使用Animations切換技術
  • 設定bLive來記錄敵機是否消滅?
  • Animator m_Animator;
  • m_Animator.SetBool("bLive", false);
  • 擊中的聲音
  • public AudioClip HitSound;
    private AudioSource audioSource;
  • audioSource = GetComponent<AudioSource>();
  • audioSource.PlayOneShot(HitSound);
  • Animation中使用外部function來消失敵機
  • public void ObjectDestroy()
    Destroy(this.gameObject);

SpaceWar04 Virtual Joystick Control Actor

SpaceWar05 空中大戰遊戲第3版

App第2章

  • 2-1 Android App的主角:Activity
  • 2-2 Android 程式的設計流程
  • 2-3 認識Activity的基本程式邏輯
  • 2-4 元件的佈局與屬性設定

U3D第3章2D Sprite Animation(補充教材)

U3D第4章 UI 介面設計

  • UISamples V01下載
  • 延伸作業:比對數字
    • 採用Button場景
    • 新增RandomNum產生四個不重複亂數
    • 按下按鈕比對數字
  • UI Slider(介面圓形滑桿)
    • GameObject/UI/Slider
    • 勾選 Interactable
    • Transition選擇Color Tint
    • Direction:滑動方向
    • Min Value:最小值
    • Max Value:最大值
    • Whole Numbers:等分
    • Value:目前值
  • UI ScrollTextArea
  • UI Dropdown
  • UI Input Field

第5章 2D Character

  • 官方教材範例下載
  • 開啟2D Character
  • 研討問題
    1. 角色為何可以站立在平台(Platforms)上?跳躍時如何控制頭部不會穿越頂上平台?
    2. 角色動畫的組成有哪些?動作彼此運作的條件機制有哪些?
    3. 說明鍵盤控制角色運動方式?
    4. 角色如何推動方塊?
    5. 追隨角色的鏡頭運鏡方式說明。
    6. 角色死亡重生的機制為何?
  • 延伸作業: PACMan
  • PACMan Flash版素材下載
  • 作業項目
    1. 將PACMan角色及場景碰撞建立起來
    2. PACMan鍵盤角色控制及碰撞控制
    3. 小粒丸放置及碰撞吃分的計分機制
    4. 鬼角色建立及追趕角色AI機制
    5. 角色死亡重玩機制
    6. 大粒丸放置及鬼變色後機制
    7. 開頭動畫及介面