iT邦幫忙

2022 iThome 鐵人賽

DAY 6
0
自我挑戰組

從零開始用Unity設計遊戲系列 第 6

目標:方向鍵控制物體

  • 分享至 

  • xImage
  •  

今天是挑戰第6天。

首先在編寫用方向鍵控制物體就遇到不少問題>先附上程式碼

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript1 : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
     if (Input.GetKeyDown("left"))
        {
            transform.Translate (-1, 0, 0);
        }
     if (Input.GetKeyDown("right"))
        {
            transform.Translate(1, 0, 0);
        }
     if (Input.GetKeyDown("up"))
        {
            transform.Translate(0, 1, 0);
        }
     if (Input.GetKeyDown("down"))
        {
            transform.Translate(0,-1, 0);
        }
    }
}

1.首先第一個遇到的問題是上下左右鍵的設置:
一開始上網查對應的鍵值是對應如下
UpArrow 方向鍵上
DownArrow 方向鍵下
RightArrow 方向鍵右
LeftArrow 方向鍵左
但Unity表示錯誤,後來還打了第一個字的大寫像Right結果也是錯誤,簡簡單單的上下左右卻經歷這麼多錯誤QAQ

2.再來GetKey跟GetKeyDown的選擇
GetKey 是當按鍵按下後持續執行,直到放開按鍵結束
GetKeyDown則是按下後瞬間執行一次
Getkey設定X軸移動1單位在遊戲裡面執行很明顯太快,當按一下右鍵就飛出去畫面了,而GetKeyDown我認為比較適合其他遊戲,像是要做接東西的遊戲,比如天上掉寶藏或石頭,然後控制物體左右移動來選擇要接寶藏或是避開石頭。所以我認為想做教程的移動模式比較適合Getkey。
而最後決定修改成小數,也就要加入浮點數來解決移動太快的問題。

修改後如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class moving : MonoBehaviour
{
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKey("left"))
        {
            transform.Translate(-0.1f, 0, 0);
        }
        if (Input.GetKey("right"))
        {
            transform.Translate(0.1f, 0, 0);
        }
        if (Input.GetKey("up"))
        {
            transform.Translate(0, 0.1f, 0);
        }
        if (Input.GetKey("down"))
        {
            transform.Translate(0, -0.1f, 0);
        }
    }
}

最後結果明顯成功不少
結果展示:
Yes
接著希望加入背景與終點,還需要更多遊戲控制~~~

參考資料

https://www.796t.com/content/1545021202.html
https://www.gameislearning.url.tw/article_content.php?getb=2&foog=9997


上一篇
目標:移動物體(二)
下一篇
目標:加入背景~
系列文
從零開始用Unity設計遊戲30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言