简单的3D射击类游戏制作

成品

简单的3D射击类游戏制作_第1张图片

1、创建场景Plane

  • 在Hierarchy视图点鼠标右键找到3Dobject里面的Plane(平面)
  • 将Plane这个游戏物体的Scale都设置为5
  • 添加材质

将事先准备好的材质(material)拖到Plane这个物体上

2、创建方块预制体和导弹预制体

2.1、创建方块预制体

1、在Hierarchy视图点鼠标右键找到3Dobject里面的Cube
2、把Cube从Hierarchy窗口拖到Project窗口制作成了prefabe(预制体)
3、在Inspecter窗口为Cube添加刚体组件(rigidbody )
4、为Cube添加材质

将事先准备好的材质(material)拖到Plane这个物体上

简单的3D射击类游戏制作_第2张图片

5、通过Ctrl+D复制Cube,按住Ctrl实现单位移动的方法创建出一堵墙


简单的3D射击类游戏制作_第3张图片

2.2、创建导弹预制体

1、导入导弹素材
2、把炮塔素材包里面的导弹拿出来添加材质
3、将其拖到project窗口制作成prefabe


简单的3D射击类游戏制作_第4张图片

创建c#脚本

1、创建c#脚本,然后把脚本拖动到Main camera上面
2、保存写下的代码,然后在unity界面完成对一些public属性的对象赋值(比如导弹)

ps:注意类名要和脚本文件名字一致

具体功能代码
Movement.cs

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

public class Movement : MonoBehaviour
{
    public float speed = 3;
    public float upAndDownSpeed = 10;
    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        float h = Input.GetAxis("Horizontal");
        //用来监测水平方向键的按下,左还是右
        float v = Input.GetAxis("Vertical");
        //用来检测前后方向(本来是竖直被我改成了前后)
        float z = 0;
        if(Input.GetKey(KeyCode.Q))
        {
            z += Time.deltaTime * upAndDownSpeed;
            //通过捕获Q键来改变变量z的值,从而改变脚本所在物体竖直坐标
        }
        else if(Input.GetKey(KeyCode.E))
        {
            z -= Time.deltaTime * upAndDownSpeed;
        }
        transform.Translate(new Vector3(h, z, v)*Time.deltaTime*speed);//以两米每秒的速度运行
        //通过这个改变脚本所在游戏物体的位置
    }
}

Shoot.cs

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

public class Shoot : MonoBehaviour
{
    public GameObject zidan;
    public float speed = 5;
    // Start is called before the first frame update
    void Start()
    {
        Debug.Log("Hello world");
    }

    // Update is called once per frame
    void Update()
    {
        if(Input.GetMouseButtonDown(0))//如果鼠标左键被按下,0代表鼠标左键
        {
           GameObject b = GameObject.Instantiate(zidan,transform.position, 
                Quaternion.Euler(-transform.rotation.eulerAngles.z, 
                transform.rotation.eulerAngles.y + 90.0f, transform.rotation.eulerAngles.x));
            //在此感谢数字媒体部的ajil同学帮我把手榴弹效果改成了导弹效果
            //通过这个实例出和游戏里面给定的prefabe一样的实例
            //后面两个参数一个是所放游戏物体的位置,一个是其旋转情况
            //将该实例化对象赋值给游戏物体b,接下来就对b这个对象进行操作
            Rigidbody rgb = b.GetComponent();
            //通过这个代码获得b这个对象的刚体组件
            //接着把组件赋值给rgb这个刚体对象
            rgb.velocity = transform.forward * speed;
            //获得脚本所在游戏物体的向前方向,乘上初速度
        }
    }
}

优化场景

在场景添加一些诸如树或者其他的模型丰富场景


简单的3D射击类游戏制作_第5张图片

完成制作

简单的3D射击类游戏制作_第6张图片

你可能感兴趣的:(简单的3D射击类游戏制作)