一,什么是游戏引擎
这里推荐大家先阅读一下下面这篇文章:
【Visual C++】游戏开发笔记三十五 站在巨人的肩膀上:游戏引擎导论
我觉得写的非常棒!
游戏引擎好比赛车的引擎,是用于控制所有游戏功能的主程序,从计算碰撞、物理加速系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等。
无论是角色扮演游戏、即时策略游戏、冒险解谜游戏或是动作射击游戏,哪怕是一个只有1兆的小游戏,都有这样一段起控制作用的代码。
这里我们丢出一个概念。游戏引擎是指一些已编译好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。
这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出一款游戏作品,而不是从零开始写起,这样大大缩短了开发的效率,开发的时间和开发的成本。
可以这样说,游戏引擎让我们站在巨人的肩膀上进行游戏的开发,而不是从零开始。
二,安装Unity3D
我们很大程度上将游戏引擎都理解为渲染引擎,分为2D图形引擎和3D图形引擎,其实游戏引擎并不单单指渲染引擎。渲染引擎只是一款完善的游戏引擎最重要的组成部分,而一款完善的引擎,还包含物理引擎,碰撞检测引擎,音效引擎,脚本引擎,电脑动画引擎,人工智能引擎,网络引擎,场景管理引擎以及IO管理引擎等等。
Unity3D就是一款比较完善的游戏引擎。
首先,管他三七二十一,先把墙翻好,网速要有保障,方便查看各种资料。然后去官网下载相应版本的unity3D。
下面提一下我经历过的几个坑:
- 1,由于安装的是免费版,所以。。。编辑器界面皮肤不能更改,真心难看,真心难看,真心难看!
- 2,系统是windows的,所以默认就把vs装了,打开撸了会代码发现,没有代码提示,这就很尴尬了,然而,解决办法是有的,就是安装.net framework3.5,装好后就有代码提示了
- 3,由于本人一直用java,很少所以很少接触vs,用着很不习惯,后来在unity里找到了另外一个貌似是官方的编辑器,叫MonoDevelop,这个IDE比较简洁相比vs,快速,对系统内存占用的也很少,还是比较好用的。
- 4,查看api资料 https://docs.unity3d.com/ScriptReference/index.html
在MonoDevelop有快捷键,选中关键字,Ctrl + '
三,开始撸游戏
根据官方的教程撸一个小游戏
项目结构:
1,创建项目
2,创建Plane,记得reset一下position,然后设置一下大小,创建一个Matieral文件夹用于存一些颜色纹理资源,创建一个Background的Matieral,设置Color(0,32,64),再把Background拖到Plane上。
3,创建四个围墙
4,创建Player,为其添加RigidBody,以及控制Player的脚本
脚本代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerScript : MonoBehaviour {
public float speed;
private Rigidbody rb;
// Use this for initialization
void Start () {
rb = GetComponent<Rigidbody> ();
}
void FixedUpdate () {
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
rb.AddForce(movement * speed);
}
}
5,创建控制相机的脚本
设置好相机的角度和位置
脚本代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraController : MonoBehaviour
{
public GameObject player;
private Vector3 offset;
void Start()
{
offset = transform.position - player.transform.position;
}
void LateUpdate()
{
transform.position = player.transform.position + offset;
}
}
6,创建Pickups,为其添加RigidBody,以及对应的Matieral颜色黄色,Prefabs和脚本
复制的快捷键是:Ctrl + D
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Rotator : MonoBehaviour {
// Update is called once per frame
void Update () {
transform.Rotate(new Vector3(15, 30, 45) * Time.deltaTime);
}
}
7,显示分数和其他信息,并用脚本控制Text
新建一个Tag用来在脚本里判断Pick up
创建显示信息的Text:Creat==>UI==>Text
脚本:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class PlayerScript : MonoBehaviour {
public float speed;
public Text countText;
public Text winText;
private Rigidbody rb;
private int count;
void Start()
{
rb = GetComponent<Rigidbody>();
count = 0;
SetCountText();
winText.text = "";
}
void FixedUpdate()
{
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
rb.AddForce(movement * speed);
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("My Cube"))
{
other.gameObject.SetActive(false);
count = count + 1;
SetCountText();
}
}
void SetCountText()
{
countText.text = "Count: " + count.ToString();
if (count >= 12)
{
winText.text = "You Win!";
}
}
}
8,大功告成,保存scene