当前位置:   article > 正文

Unity迷宫中吃金币_unity3d吃金币计数

unity3d吃金币计数

1、新建3D项目-->命名并创建项目

 2、右键点击3D Object新建平面Plane,调整平面大小,并且平面不要设置太大,否则后期小球会穿墙,在Assert中选择一个迷宫的贴图并将它给平面。

3、创建Cube,将它设置的和下边的迷宫图重合,还可以给Cube添加材质Material,换上自己喜欢的颜色

 4、添加Sphere,修改名字为player,调整小球的位置,并设置材质。

 5、添加move脚本,将脚本拖给小球,使小球能够通过WASD或上下左右移动。

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using UnityEngine.SceneManagement;
  6. public class move : MonoBehaviour
  7. {
  8. public float speed=1;
  9. // Start is called before the first frame update
  10. void Start()
  11. {
  12. }
  13. // Update is called once per frame
  14. void Update()
  15. {
  16. float v = Input.GetAxis("Vertical"); //按‘W’'S'键返回垂直方向[-1,1]的值
  17. float h = Input.GetAxis("Horizontal");//按‘A’'D'键返回水平方向[-1,1]的值
  18. transform.Translate(h * speed * Time.deltaTime, 0, v * speed * Time.deltaTime);
  19. }
  20. }

6、选中小球,选择右侧的Add Component,搜索Rigidbody,选择然后选中Use Gravity,点开Constrains,将这些打勾,否则小球会乱转。

7、添加金币,将其放在迷宫的各个位置,新建一个create empty,改名为coin,将所有小球放在coin里,添加rorate脚本,选中一个小球,点shift,点击最后一个小球,就可选中所有的小球,将脚本给所有小球,让所有小球旋转。

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public class rorate : MonoBehaviour
  5. {
  6. // Start is called before the first frame update
  7. void Start()
  8. {
  9. }
  10. // Update is called once per frame
  11. void Update()
  12. {
  13. this.transform.Rotate(Vector3.up,Space.World);
  14. }
  15. }

8、给move脚本添加内容,使小球碰到金币就会吃掉它。给所有小球添加tag ,命名为coin,并选择,然后添加is Trigger,这样就实现小球移动,金币旋转,和小球吃掉金币的效果。

  1. private void OnTriggerEnter(Collider other)
  2. {
  3. if (other.tag == "coin")
  4. {
  5. Destroy(other.gameObject);
  6. }
  7. }

9、新建一个Panel,实现计时和得分的效果,添加text文本,修改文本为score和time,再设置win和fail的文本。

 10、继续在move里面添加代码,当吃掉小球时,进行计分。并新建一个空项目,设置倒计时,新建倒计时TimeDown的脚本将其给新建的空项目。

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. using UnityEngine.SceneManagement;
  6. public class move : MonoBehaviour
  7. {
  8. public float speed=1;
  9. private int score_num = 0;
  10. public Text score;
  11. public GameObject win;
  12. // Start is called before the first frame update
  13. void Start()
  14. {
  15. win.SetActive(false);
  16. }
  17. // Update is called once per frame
  18. void Update()
  19. {
  20. float v = Input.GetAxis("Vertical"); //按‘W’'S'键返回垂直方向[-1,1]的值
  21. float h = Input.GetAxis("Horizontal");//按‘A’'D'键返回水平方向[-1,1]的值
  22. transform.Translate(h * speed * Time.deltaTime, 0, v * speed * Time.deltaTime);
  23. if (Input.GetKeyDown(KeyCode.R))
  24. {
  25. SceneManager.LoadScene(0);
  26. Time.timeScale = 1;
  27. return;
  28. }
  29. }
  30. private void OnTriggerEnter(Collider other)
  31. {
  32. if (other.tag == "coin")
  33. {
  34. score_num++;
  35. score.text = "score: " + score_num.ToString();//显示字符串,字符串控制符
  36. Destroy(other.gameObject);
  37. if (score_num == 10)
  38. {
  39. win.SetActive(true);
  40. Time.timeScale = 0;//运行时间倍率,0代表游戏停滞
  41. }
  42. }
  43. }
  44. }

 倒计时脚本:

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. public class TimeDown : MonoBehaviour
  6. {
  7. private float CountDownTime = 29f;
  8. private float GameTime;
  9. private float timer = 0;
  10. public Text GameCountTimeText;
  11. public GameObject over;
  12. private AudioSource au;
  13. private void Start()
  14. {
  15. GameTime = CountDownTime;
  16. over.SetActive(false);
  17. au = GetComponent<AudioSource>();
  18. }
  19. private void Update()
  20. {
  21. int M = (int)(GameTime / 60);
  22. float S = GameTime % 60;
  23. timer += Time.deltaTime;
  24. if (timer >= 1f)
  25. {
  26. timer = 0;
  27. GameTime--;
  28. GameCountTimeText.text = "time"+M + ":" + string.Format("{0:00}", S);
  29. if (S <= 0)
  30. {
  31. //au.Play();
  32. over.SetActive(true);
  33. //结束游戏操作
  34. Time.timeScale = 0;
  35. }
  36. }
  37. }
  38. }

11、给小球添加游戏音效和吃掉金币的音效。

保存并运行,便可以运行游戏了。

还可以添加游戏开始和游戏结束的页面。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/746437
推荐阅读
相关标签
  

闽ICP备14008679号