Unity3D小白游戏--打砖块

先让我们康康效果演示:

1.先创建地面和墙
  • 地面和墙分别为Plane和Cube类型。
  • 将Cube设置为Prefabs(预制体),添加刚体组件
  • 添加材质给地面
    Unity3D小白游戏--打砖块_第1张图片
    Unity3D小白游戏--打砖块_第2张图片
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);

	}
}

产生效果为:
Unity3D小白游戏--打砖块_第3张图片

(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;
        }
      
	}
}

效果演示:
Unity3D小白游戏--打砖块_第4张图片

好吧,这样球看起来有点太暴躁,所以我多加了一个触发检测。

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);
        }
    }

}

Unity3D小白游戏--打砖块_第5张图片

这样就和谐多了。

快去试试吧!!

拓展知识:

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);

相当于复制多个游戏物体,多用于弹丸的物体,或用于爆炸效果的粒子系统。

你可能感兴趣的:(Unity,3D)