1、新建3D项目-->命名并创建项目
2、右键点击3D Object新建平面Plane,调整平面大小,并且平面不要设置太大,否则后期小球会穿墙,在Assert中选择一个迷宫的贴图并将它给平面。
3、创建Cube,将它设置的和下边的迷宫图重合,还可以给Cube添加材质Material,换上自己喜欢的颜色
4、添加Sphere,修改名字为player,调整小球的位置,并设置材质。
5、添加move脚本,将脚本拖给小球,使小球能够通过WASD或上下左右移动。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class move : MonoBehaviour
{
public float speed=1;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
float v = Input.GetAxis("Vertical"); //按‘W’'S'键返回垂直方向[-1,1]的值
float h = Input.GetAxis("Horizontal");//按‘A’'D'键返回水平方向[-1,1]的值
transform.Translate(h * speed * Time.deltaTime, 0, v * speed * Time.deltaTime);
}
}
6、选中小球,选择右侧的Add Component,搜索Rigidbody,选择然后选中Use Gravity,点开Constrains,将这些打勾,否则小球会乱转。
7、添加金币,将其放在迷宫的各个位置,新建一个create empty,改名为coin,将所有小球放在coin里,添加rorate脚本,选中一个小球,点shift,点击最后一个小球,就可选中所有的小球,将脚本给所有小球,让所有小球旋转。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class rorate : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
this.transform.Rotate(Vector3.up,Space.World);
}
}
8、给move脚本添加内容,使小球碰到金币就会吃掉它。给所有小球添加tag ,命名为coin,并选择,然后添加is Trigger,这样就实现小球移动,金币旋转,和小球吃掉金币的效果。
private void OnTriggerEnter(Collider other)
{
if (other.tag == "coin")
{
Destroy(other.gameObject);
}
}
9、新建一个Panel,实现计时和得分的效果,添加text文本,修改文本为score和time,再设置win和fail的文本。
10、继续在move里面添加代码,当吃掉小球时,进行计分。并新建一个空项目,设置倒计时,新建倒计时TimeDown的脚本将其给新建的空项目。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class move : MonoBehaviour
{
public float speed=1;
private int score_num = 0;
public Text score;
public GameObject win;
// Start is called before the first frame update
void Start()
{
win.SetActive(false);
}
// Update is called once per frame
void Update()
{
float v = Input.GetAxis("Vertical"); //按‘W’'S'键返回垂直方向[-1,1]的值
float h = Input.GetAxis("Horizontal");//按‘A’'D'键返回水平方向[-1,1]的值
transform.Translate(h * speed * Time.deltaTime, 0, v * speed * Time.deltaTime);
if (Input.GetKeyDown(KeyCode.R))
{
SceneManager.LoadScene(0);
Time.timeScale = 1;
return;
}
}
private void OnTriggerEnter(Collider other)
{
if (other.tag == "coin")
{
score_num++;
score.text = "score: " + score_num.ToString();//显示字符串,字符串控制符
Destroy(other.gameObject);
if (score_num == 10)
{
win.SetActive(true);
Time.timeScale = 0;//运行时间倍率,0代表游戏停滞
}
}
}
}
倒计时脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class TimeDown : MonoBehaviour
{
private float CountDownTime = 29f;
private float GameTime;
private float timer = 0;
public Text GameCountTimeText;
public GameObject over;
private AudioSource au;
private void Start()
{
GameTime = CountDownTime;
over.SetActive(false);
au = GetComponent<AudioSource>();
}
private void Update()
{
int M = (int)(GameTime / 60);
float S = GameTime % 60;
timer += Time.deltaTime;
if (timer >= 1f)
{
timer = 0;
GameTime--;
GameCountTimeText.text = "time"+M + ":" + string.Format("{0:00}", S);
if (S <= 0)
{
//au.Play();
over.SetActive(true);
//结束游戏操作
Time.timeScale = 0;
}
}
}
}
11、给小球添加游戏音效和吃掉金币的音效。
保存并运行,便可以运行游戏了。
还可以添加游戏开始和游戏结束的页面。文章来源:https://www.toymoban.com/news/detail-476106.html
文章来源地址https://www.toymoban.com/news/detail-476106.html
到了这里,关于Unity迷宫中吃金币的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!