Unity官方例子:Roll A Ball
操作系统:windows10
工具:unity5.5 vs code
1.首先创建一个3D项目。
进入到unity编辑界面,然后在Assets文件夹创建一个名为Scenes的文件夹,然后按下ctrl+s保存场景,命名为main。
2.创建一个3D对象,在Hierarchy视图按下鼠标右键,选择3D object——>Plane,可以在Plane的属性里修改,修改Plane的名称为Ground
3.接着创建Materials文件夹,在里面创建一个材质,鼠标右键,选择Material,然后修改颜色。
4.修改好之后,将材质黏在地板上,修改地板的颜色。
5.添加小球,鼠标右键 选择 3D object ——> Sphere,然后进行位置调整,修改小球的名字为player。
6.添加刚体组件,在player里,按下Add,然后输入Rigidbody,按下回车,刚体组件的作用主要是物理模拟,比如重力,速度一类的
7.创建一个Scripts文件夹,在player里添加一个C#脚本,命名为player,通过代码让球体进行移动。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class player : MonoBehaviour {
// Use this for initialization
private Rigidbody rd;
public int force = 5;
void Start () {
rd = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update () {
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
rd.AddForce(new Vector3(h,0,v)*force);
}
}
Start方法,是初始化代码,update是功能性命令,会一直调用这一块的方法,然后创建一个公共的值,在unity里可以修改这个值,这个值主要是球体的移动速度。
(Force的值就是控制球的移动速度)
8.接着让相机跟着球体移动,创建一个FollowTarget脚本,黏贴在camera上,然后将player组件,黏贴在Player Transform上。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FollowTarget : MonoBehaviour {
// Use this for initialization
public Transform playerTransform;
private Vector3 offset;
void Start () {
offset = transform.position - playerTransform.position;
}
// Update is called once per frame
void Update () {
transform.position = playerTransform.position+offset;
}
}
9.为了不让球掉下去,建立4个长方体,将平台围起来,右键——> 3D object——> Cube
然后按ctrl+d进行复制
10.然后创建可以被大球吃掉的物品,先创建一个文件夹,命名为Prefabs,然后创建一个cube,命名为pickup,然后放在prefabs文件夹,接着修改pickup的颜色
11.接着创建一个游戏对象,快捷键为ctrl+shift+N,命名为pickups,然后把这些组件放在游戏对象下。
12.让这些物体动起来,需要添加一个C#脚本,创建一个C#脚本,命名为Pickup,然后在之前创建的模型里添加这个脚本。
13.接着让球体吃掉这些物体,在player里添加代码(PS:所有的pickup不要在Is Trigger打勾)
void OnCollisionEnter(Collision Collision){
//Collision.collider//获取碰撞到的游戏物体身上的Collider组件
if(Collision.collider.tag==”PickUp”){
Destroy(Collision.collider.gameObject);
}
}
14.这个时候碰撞会有一定的卡顿,为了进一步优化,继续添加代码
void OnTriggerEnter(Collider collider){
if(collider.tag == “PickUp”){
Destroy(collider.gameObject);
}
}
接着设置pickup属性将Is Trigger打上勾
15.添加积分器和游戏胜利的标志
右键——>UI——>Text,进行位置调整后,然后修改player脚本,添加头文件
using UnityEngine.UI;
接着添加积分代码
private int score = 0;
public Text text;
void OnTriggerEnter(Collider collider){
if(collider.tag == “PickUp”){
score++;
text.text = score.ToString();
Destroy(collider.gameObject);
}
16.最后一步显示胜利文字添,加一个text文本,然后修改player代码,新添加的文本命名为WinText,把钩去掉,隐藏起来
void OnTriggerEnter(Collider collider){
if(collider.tag == “PickUp”){
score++;
text.text = score.ToString();
if(score==10){
WinText.SetActive(true);
}
Destroy(collider.gameObject);
}
}
}
本教程介绍如何使用Unity开发Roll A Ball游戏。从创建3D项目开始,逐步创建场景、设置地面和球体,添加刚体组件,编写C#脚本实现玩家控制和物体碰撞效果,直至实现积分系统和胜利条件。
2050

被折叠的 条评论
为什么被折叠?



