Unity学习之RollAballGame改动版本
来源:互联网 发布:sleep函数c语言实现 编辑:程序博客网 时间:2024/05/22 05:19
根据Unity官方给的Tutorials的Roll-a-Ball tutorial实例进行了一定的改动,用来学习Unity,这个游戏就是小球撞击其他正方体让正方体消失,原始案例使用的是方向键,我将它改为屏幕点击使小球移动,这样一来,传到手机上一样可以玩,点击屏幕的代码,是我从网上找到的,因为我完全没有思路解决点击屏幕事件,就看了一下别人怎么实现的。于是,我查到了一个方法就是用Ray来实现,首先,屏幕是个二维界面,而这个游戏是个3D游戏,那么二维坐标和三维坐标肯定不一样,就需要通过射线来实现转换,以摄像机为源点,设定射线长为100,射线终点为鼠标左键点击的位置,当完成鼠标点击后,获取终点位置,这样就得到了点击时的世界坐标,接下来就是位移了,官方给的代码示例是根据小球的Rigidbody的addforce使小球发生移动,而查询到的代码使用的是Translate是小球位移。
那么我就展示一下我更改的代码,PlayerController.cs
using UnityEngine;using UnityEngine.UI;using System.Collections;public class PlayerController : MonoBehaviour { private Rigidbody rb; public float speed; public Text winText; private int count; public float speed1= 3f; private Vector3 offsetVec; // Use this for initialization void Start () { rb = GetComponent<Rigidbody>(); count = 0; winText.text = "";} // Update is called once per frame void FixedUpdate() { RaycastHit hitInfo; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hitInfo, 100)) { //当射线碰撞到plane并且鼠标左键按下时 if (hitInfo.transform.tag == "Ground" && Input.GetMouseButtonDown(0)) { //让cube方向朝向点击位置 transform.LookAt(hitInfo.point); offsetVec = hitInfo.point - transform.position; } } //向量的magnitude表示这个向量的长度,当cube离我们点击位置小于1的时候才停止移动,这个数值可以自己调节 if (offsetVec.magnitude > 1f) { transform.Translate(Vector3.forward * speed1 * Time.deltaTime); //更新offsetVec的值 offsetVec = hitInfo.point - transform.position; } } void OnTriggerEnter(Collider other) { if(other.gameObject.CompareTag("Pick Up")) { count++; other.gameObject.SetActive(false); if (count>8) { winText.text = "You want to win? \n Impossible.(-.-)"; } } }}至于3D场景,我使用的时候出现了一点问题,10个正方体当中有一个无法碰撞消失,于是我将错就错,改为吃到9个就结束游戏。其他代码和官网给的一致,我就不贴出来了。
0 0
- Unity学习之RollAballGame改动版本
- TensorFlow 版本改动
- cocos2dx3.2 绘图方法小改动之 C++ final学习
- unity学习之公路
- Unity学习之三
- unity学习之Transform
- Unity学习之小结
- unity学习之总结
- Unity学习之GUI
- Unity学习之GUI
- unity学习之GUI
- unity学习之小游戏
- unity学习之进度条
- unity学习之标签
- unity学习之摇杆
- Unity学习之路
- Unity 学习之路~
- Unity学习之C#
- 在IT行业中,如何拿到15K的月薪?
- 给自己定个目标,向阿里p7前进
- Java实现向数据库中存放和读取图片
- NOIP 提高组 初赛 四、阅读程序写结果 习题集(二)NOIP2000-NOIP2001
- HUE安装及问题
- Unity学习之RollAballGame改动版本
- Worst NSGA-II的大概介绍
- JavaScript:DOM事件流总结
- 网络编程(33)—— 使用AF_UNIX构建本地通信的socket服务端和客户端
- T-SQL和MySQL的一些常用语法的区别
- C_0327_01 C语言入门简介
- 返聘前任员工:效率高出新人40%!
- IOS开发笔记11-Object-C中的传递消息
- Android学习篇:Activity介绍