【Unity学习第一天】打砖块实例学习

**

基本流程


**
0、实现一个小游戏,每次点击都会发射出一个子弹,对砖块进行打击,同时可以使用方向键控制镜头移动。
1、创建场景:基本都是unity内部的拖拖拽拽,砖块和子弹需要建立预制,当预制发生变动时,所有的实例都会同步。
2、创建脚本:

① 脚本可以理解为一个组件,需要注意脚本需要挂在正确的物体上。此处脚本需要挂在在camera上。
② 在脚本中定义一个GameObject变量,并在工程中将prefab赋值。

3、子弹射击脚本:主要用来实现子弹的射击。

① 检测相关输入:
    if(Input.GetMouseButtonDown(0)) 
② 实例化生成一个子弹:
    GameObject b = GameObject.Instantiate(bullet, transform.position, transform.rotation);
③ 给子弹一个射击的速度:
    Rigidbody rgd = b.GetComponent<Rigidbody>();
    rgd.velocity = transform.forward *speed;
    //Rigidbody的velocity和AddForce的区别。前者直接赋予速度,后者模拟受力。

4、相机位移脚本:

① 检测相关输入:
    float h = Input.GetAxisRaw("Hirizontal");
    float v = Input.getAxisRaw("Vertical");
② 将这个输入量转化成相机的位移:
    transform.Translate(new Vector(h,v,0) * Time.deltaTime *speed);

变化1


**
0、原例中子弹前行的方向始终是camera的forward方向,将子弹的前行路线重新定义为相机到鼠标点击的位置。
1、需要在射击的脚本中进行修改:

//获取从相机到书标点击位置的射线
Ray ray = Camera.main.ScreenPointToRay(Input.mousePostion);

//子弹前进的方向为射线的方向
rgd.velocity = ray.direction * speed;

变化2


**
0、在变化1的基础上,在场景中创建一个枪口实体,每次点击,子弹均从枪口射出,并射向鼠标所指的方向。
1、首先创建枪口,并将shoot代码从相机上移除,挂在在枪口上。移动脚本仍然控制相机,所以保持不变。
2、朋友提供了一个方法,通过射线碰撞检测的方法,先得到鼠标的触碰点,然后再计算从枪口发射到触碰点的射线。首先需要添加一个Plane面,将其和砖块的正面对齐,代码如下:

Ray ray = Camera.main.ScreenPointToRay(Input.mouseposition);
RaycastHit hit;

//射线的碰撞检测,射线在无穷大(Mathf.Infinity)的方向上,第一个触碰到的点,将其信息保存到hit中
if(Physics.Raycast(ray, out hit, Mathf.Infinity)) {
    //Debug.DrawLine(ray.origin, hit.point, Color.red, 2);
    GameObject b = GameObject.Instantiate(bullet, transform.position, transform.rotation);
    Vector3 tff = hit.point - transform.position;

    Rigidbody rgd = b.GetComponent<Rigidbody>();
    rgd.AddForce(300 * tff);
}

算是知识点吧


**
1、在Edit->Project Settings->Input中可以查询到各种Axes参数X,获取输入的方式大致为:Input.getAxis(“X”)
2、Input.getAxisRaw(“”)

猜你喜欢

转载自blog.csdn.net/weixin_43053831/article/details/82016354