2019年12月3日 星期二

【自製小遊戲】水平思考猜謎(海龜湯)


海龜湯的玩法是由出題者提出一個難以理解的事件,參與猜題者可以提出任何問題以試圖縮小範圍並找出事件背後真正的原因。但出題者僅能以「是」、「不是」或「沒有關係」來回答問題。

本遊戲蒐集各種論壇、平台的42個題目,提供給想玩海龜湯卻愁找不到題目的你們。
決定好一位出題者,就可以在聚會、活動和排隊等待種種狀況下與眾人同樂。


2019年8月15日 星期四

【Unity官方教學分享】移動和旋轉(Translate and Rotate)

網頁連結

如何使用transform下的兩個函式;Translate和Rotate去影響一個非剛體物件的位置和角度。

在以下的範例,我們可以看到移動Translate的引數是一個vector3,而數值為Z軸1,X及Y為0。
另外這個範例在Unity執行時的一個frame都會運作,因為它是寫在Unpate中。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TransformFunctions : MonoBehaviour
{
    void Start()
    {
        
    }

    void Update()
    {
        transform.Translate(new Vector3(0, 0, 1));
    }
}

2019年8月9日 星期五

【Unity官方教學分享】啟動物件(Activating GameObjects)

網頁連結

如何使用SetActive改變場景中物件Active狀態,並分辨activeSelf /activeInHierarchy確認物件Active狀態時的差別

要在腳本中設定物件的Active狀態,你可以使用SetActive函式。
SetActive函式可以在場景中切換物件的Activate狀態,在以下的範例裡,我們在Start函式下寫一條簡單的程式碼gameObject.SetActive(false)。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ActiveObjects : MonoBehaviour
{
    void Awake()
    {
        gameObject.SetActive(false);
    }
}
接著執行Unity時,你可以看到表示物件Active狀態的打勾被取消,場景物件消失,Hierarchy視窗下字體顯示也變淡了,表示此物件處於一個未被啟動的狀態。

2019年6月24日 星期一

【Unity】自製重力

Unity中的自製重力,以下是程式碼:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MyKinematic : MonoBehaviour {
    public float gravity = 9.8f;//重力
    public Vector3 velocity = Vector3.zero;//速率
    public Vector3 deltaMove = Vector3.zero;//每偵位移量

    public float halfBoundHeight;//物體的一半高度
    public BoxCollider myCollider;//物體的Collider

    public Vector3 addForce = Vector3.zero;//跳躍施力
    // Use this for initialization
    void Start ()
    {
        myCollider = GetComponent<BoxCollider>();
        halfBoundHeight = (myCollider.size.y * 0.5f) * transform.localScale.y;
    }
 
 // Update is called once per frame
    void Update ()
    {
        HandleKeyInput();//按鍵輸入函式
    }

    void LateUpdate()
    {
        float deltatime = Time.deltaTime;
        UpdateGravity(deltatime);//重力
        UpdateMovement(deltatime);//落下
    }

    void UpdateGravity(float deltatime)
    {
        velocity.y -= gravity * deltatime; ;
    }

    void UpdateMovement(float deltatime)
    {
        //落下
        deltaMove = velocity * Time.deltaTime;

        //碰撞判定
        Vector3 raystart = transform.position + myCollider.center * transform.localScale.y;//射線起點
        float updown = 1;//方向判定
        if (velocity.y < 0)
            updown = -1;
        Vector3 raydir = Vector3.up * updown;

        float rayLength = Mathf.Abs(deltaMove.y) + halfBoundHeight;

        RaycastHit rhf = new RaycastHit();//射線
        if (Physics.Raycast(raystart, raydir, out rhf, rayLength))
        {

            if (rhf.collider != null && rhf.collider.gameObject.tag == "ground")//地板判定
            {
                deltaMove.y = rhf.point.y - raystart.y + halfBoundHeight * -updown;
                velocity = deltaMove / deltatime;
            }
        }
        transform.Translate(deltaMove, Space.World);//物體移動
    }

    void AddForce(Vector3 force)
    {
        velocity += force;
    }

    void HandleKeyInput()
    {
        if (Input.GetKeyDown(KeyCode.W))
            AddForce(addForce);

    }
}
至於重力為什麼要重新製作,一方面是為了對整套重力系統重新做理解,另一方面則是Unity物理擬真程度的問題,有些時候其實不需要那麼真實的物理效果,而自製的物理可以簡化掉一些不需要的結果。
以下是參考的網站:
設計我們的遊戲物理-簡易重力篇

2019年5月20日 星期一

使用google雲端硬碟分享html

今天要分享的是使用google雲端硬碟分享html檔案的方法。
首先開啟google雲端硬碟,在"我的雲端硬碟"下右鍵新增資料夾。

2019年4月10日 星期三

【舊專案整理兼筆記】仿2048

2048遊戲實作。
成品下載連結:
透過手指滑動螢幕,組合數字,產生出2048吧!

2019/04/15追記:
手指滑動功能完成
手機版本完成and上架

2019/04/11追記:
1)上述第1, 2點bug修正。
2)追加數字產生動畫,新增標題、背景等UI。
3)新增重新開始按鈕。
4)新增遊戲結束和過關的字樣。


待修正的問題及功能:
1)沒有數字移動時還是會生成新的數字,這點和原版本不同。
2)在盤面上沒有空格時,若玩家按下無法合併數字的方向,會直接判斷為遊戲結束。
3)追加動畫,美化介面。
4)重新開始遊戲鈕。
5)手機板按鈕(或滑動。


【自製小遊戲】水平思考猜謎(海龜湯)

遊戲連結 海龜湯的玩法是由出題者提出一個難以理解的事件,參與猜題者可以提出任何問題以試圖縮小範圍並找出事件背後真正的原因。但出題者僅能以「是」、「不是」或「沒有關係」來回答問題。 本遊戲蒐集各種論壇、平台的42個題目,提供給想玩海龜湯卻愁找不到題目的你們。 ...