Unity3D小白遊戲--打磚塊

先讓我們康康效果演示:
在這裏插入圖片描述

1.先創建地面和牆
  • 地面和牆分別爲Plane和Cube類型。
  • 將Cube設置爲Prefabs(預製體),添加剛體組件
  • 添加材質給地面
    在這裏插入圖片描述
    在這裏插入圖片描述
2.製作子彈

我們要讓子彈在相機的位置創建併發射,所以要給Main Camera添加一些腳本組件。

(1)讓相機移動

在Main Camera上添加一個腳本組件。

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

public class move : MonoBehaviour {

    //可以更方便的控制移動速度
    public float speed = 3.0f;
    // Use this for initialization
    void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
        //得到水平方向上的移動       
        float h = Input.GetAxis("Horizontal");

        //得到垂直方向上的移動
        float v = Input.GetAxis("Vertical");


        //進行移動
        //Time.deltaTime時間間隔,每幀之間的間隔。例如一秒50幀,則它就代表1/50
        //new Vector3(h, 0, v)*Time.deltaTime  表示每移動一個單位的距離耗時一幀
        transform.Translate(new Vector3(h, v, 0)*Time.deltaTime*speed);

	}
}

產生效果爲:
在這裏插入圖片描述

(2)讓相機產生子彈

在Main Camera上添加另一個腳本組件。
這樣做的目的是,讓功能區別開,方便管理和修改。

我們先創建一個小球,使其成爲預製體後,將它刪除。
給預製體添加一個剛體組件。

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

public class shot : MonoBehaviour {

    public float speed = 30.0f;
    public GameObject bullents;
    private Rigidbody rd;
	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
        //如果點擊鼠標左鍵
        if (Input.GetMouseButtonDown(0))
        {
            //就創建子彈
            GameObject bullent = GameObject.Instantiate(bullents, transform.position, transform.rotation);


            //得到小球的剛體信息
            rd= bullent.GetComponent<Rigidbody>();

            //給小球一個射擊速度
            rd.velocity = transform.forward * speed;
        }
      
	}
}

效果演示:
在這裏插入圖片描述

好吧,這樣球看起來有點太暴躁,所以我多加了一個觸發檢測。

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

public class WallDestory : MonoBehaviour {


    // Use this for initialization
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {

    }
    void OnCollisionEnter(Collision collision)
    {
        if(collision.collider.tag=="duang")
        {
            Destroy(collision.collider.gameObject);
        }
    }
    void OnTriggerEnter(Collider collider)
    {
        if (collider.tag == "duang")
        {
            Destroy(collider.gameObject);
        }
    }

}

在這裏插入圖片描述

這樣就和諧多了。

快去試試吧!!

拓展知識:

Input.GetAxis()

  1. 物體跟着鼠標移動
    float h = Input.GetAxis(“Mouse X”);
    float v = Input.GetAxis(“Mouse Y”);

  2. 物體跟着鍵盤輸入移動
    float h = Input.GetAxis(“Horizontal”);
    float v = Input.GetAxis(“Vertical”);

Input.GetMouseButtonDown()
按下鼠標之前不會返回true

  1. Input.GetMouseButtonDown(0)
    按下鼠標左鍵
  2. Input.GetMouseButtonDown(1)
    按下鼠標右鍵
  3. Input.GetMouseButtonDown(2)
    按下鼠標中鍵

Input.GetMouseButtonUp()
擡起鼠標之前不會返回true

  1. Input.GetMouseButtonUp(0)
    擡起鼠標左鍵
  2. Input.GetMouseButtonUp(1)
    擡起鼠標右鍵
  3. Input.GetMouseButtonUp(2)
    擡起鼠標中鍵

Input.GetMouseButton()
按下返回true,擡起時返回false

Object.Instantiate

  • public static Object Instantiate(Object original);
  • public static Object Instantiate(Object original, Transform parent);
  • public static Object Instantiate(Object original, Transform parent, bool instantiateInWorldSpace);
  • public static Object Instantiate(Object original, Vector3 position, Quaternion rotation);
  • public static Object Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent);

相當於複製多個遊戲物體,多用於彈丸的物體,或用於爆炸效果的粒子系統。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章