Roll a ball 学习
using UnityEngine; using System.Collections; /// <summary> /// 相机控制 /// </summary> public class CameraController : MonoBehaviour { /// <summary> /// 玩家 /// </summary> public GameObject player; /// <summary> /// 玩家到相机的偏移 /// </summary> private Vector3 offset; void Start () { //计算偏移 offset = transform.position - player.transform.position; } void LateUpdate () { //设置相机的位置为玩家的位置加 玩家到相机的偏移 transform.position = player.transform.position + offset; } }
CameraController
using UnityEngine; using UnityEngine.UI; using System.Collections; /// <summary> /// 玩家控制 /// </summary> public class PlayerController : MonoBehaviour { /// <summary> /// 移动速度 /// </summary> public float speed; /// <summary> /// 吃掉的球的数量的文本 /// </summary> public Text countText; /// <summary> /// 显示赢得比赛的文本 /// </summary> public Text winText; /// <summary> /// Rigidbody /// </summary> private Rigidbody rb; /// <summary> /// 玩家吃掉的球的数量 /// </summary> private int count; void Start () { rb = GetComponent<Rigidbody>(); count = ; 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 ("Pick Up")) { other.gameObject.SetActive (false); count = count + ; SetCountText (); } } /// <summary> /// 设置数量文本 /// </summary> void SetCountText() { //更新显示数量的文本 countText.text = "Count: " + count.ToString (); //如果数量大于等于12, ) { winText.text = "You Win!"; } } }
PlayerController
using UnityEngine; using System.Collections; /// <summary> /// 旋转小球 /// </summary> public class Rotator : MonoBehaviour { void Update () { transform.Rotate (, , ) * Time.deltaTime); } }
Rotator
using UnityEngine; using UnityEngine.UI; using System.Collections; /// <summary> /// 教程信息 /// </summary> public class TutorialInfo : MonoBehaviour { /// <summary> /// 是否在开始时显示 /// </summary> public bool showAtStart = true; /// <summary> /// 链接地址 /// </summary> public string url; /// <summary> /// 覆盖层 /// </summary> public GameObject overlay; public AudioListener mainListener; /// <summary> /// 开关 控制是否在开始时显示 /// </summary> public Toggle showAtStartToggle; /// <summary> /// showLaunchScreen PlayerPrefs /// </summary> public static string showAtStartPrefsKey = "showLaunchScreen"; /// <summary> /// 是否已经显示过了 /// </summary> private static bool alreadyShownThisSession = false; void Awake() { if(alreadyShownThisSession) { StartGame(); } else { alreadyShownThisSession = true; //如果prefs 有键,获取值,赋值给 showAtStart变量 if (PlayerPrefs.HasKey(showAtStartPrefsKey)) { showAtStart = PlayerPrefs.GetInt(showAtStartPrefsKey) == ; } //根据showAtStart 设置 Toggle 的勾选状态 showAtStartToggle.isOn = showAtStart; //根据showAtStart 显示启动界面或者直接开始游戏 if (showAtStart) { ShowLaunchScreen(); } else { StartGame (); } } } /// <summary> /// 显示启动界面 /// </summary> public void ShowLaunchScreen() { //游戏暂停 Time.timeScale = 0f; mainListener.enabled = false; overlay.SetActive (true); } /// <summary> /// 打开链接地址 /// </summary> public void LaunchTutorial() { Application.OpenURL (url); } /// <summary> /// 开始游戏 /// </summary> public void StartGame() { overlay.SetActive (false); mainListener.enabled = true; //恢复正常的时间 Time.timeScale = 1f; } /// <summary> /// 打开/关闭 是否在启动时显示 /// </summary> public void ToggleShowAtLaunch() { showAtStart = showAtStartToggle.isOn; PlayerPrefs.SetInt(showAtStartPrefsKey, showAtStart ? : ); } }
TutorialInfo
using UnityEngine; using UnityEditor; using System.Collections; /// <summary> /// 教程信息编辑器 /// </summary> [CustomEditor(typeof(TutorialInfo))] //指定这个编辑器脚本对应的脚本 public class TutorialInfoEditor : Editor { /// <summary> /// ScriptObject.OnEnable /// </summary> void OnEnable() { //如果首选项里存在键 if (PlayerPrefs.HasKey(TutorialInfo.showAtStartPrefsKey)) { //读取值,根据值设置是否在开始时启用 ((TutorialInfo)target).showAtStart = PlayerPrefs.GetInt(TutorialInfo.showAtStartPrefsKey) == ; } } /// <summary> /// Editor.OnInSpectorGUI /// 自定义检视面板 /// </summary> public override void OnInspectorGUI() { //检查BeginChangeCheck()/EndChangeCheck() 里代码块内的控件是否有变 EditorGUI.BeginChangeCheck(); base.OnInspectorGUI(); //如果有变化,重新获取并设置 showAtStartPrefsKey 的值 if(EditorGUI.EndChangeCheck()) { PlayerPrefs.SetInt(TutorialInfo.showAtStartPrefsKey,((TutorialInfo)target).showAtStart ? : ); } } }
TutorialInfoEditor
视频:https://pan.baidu.com/s/1jIHlTga
项目:https://pan.baidu.com/s/1c1Tffo
Roll a ball 学习的更多相关文章
- 学习unity的第一个小游戏(Roll the ball)的笔记
1.摄像机的跟随运动,逻辑就是保持摄像机跟主角的距离不变(Undate()函数). offset=trandform.position-player.position. Undate() { tran ...
- Roll A Ball
GameObject的添加就不细说了,地面,小球和碰撞小物体. 刚体组件(Rigidbody): 使物体能够模拟物理效果,比如重力,碰撞,推力等: 控制小球移动的脚本(Script,Ball的脚本): ...
- 关于Roll A Ball实例练习记录
学习中不段进步! 游戏思路:通过键盘控制白色小球,让它"捡起"柠黄色方块,捡起一个加1分,全部捡起游戏胜利! 游戏对象: Ground:绿色地面 player: 小球 Obsta ...
- 1.1.0 Unity零基础入门2——Roll a Ball
1. 游戏界面 2.代码 //FoodRotate - - 控制cube旋转 using System.Collections; using System.Collections.Generic; u ...
- Siki_Unity_1-2_Unity5.2入门课程_进入Unity开发的奇幻世界_Roll A Ball
1-2 Unity5.2入门课程 进入Unity开发的奇幻世界 任务1:Roll A Ball项目简介 Unity官网的tutorial入门项目 方向键控制小球在平台上滚动,碰撞方块得分,消掉所有方块 ...
- URAL 1775 B - Space Bowling 计算几何
B - Space BowlingTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/ ...
- egret贝塞尔曲线运动
class MtwGame { public constructor() { } private static _instance: MtwGame; public static get Instan ...
- Ethereum Learning Materials
Home 注:本页为 EthFans 站内文章精选集.鉴于文章的采集范围较广,我们无法保证文章内容没有重复,也不能保证排列的顺序实现了最优的认识路径.我们只能说,这些文章是我们精挑细选后,确认可以长期 ...
- JAVAAPI学习之Calendar类;Calendar类set()、add()、roll()方法区别
JAVAAPI学习之Calendar类 http://blog.csdn.net/myjlvzlp/article/details/8065775(写的很好,清晰易懂) Calendar类set(). ...
随机推荐
- 201621123001 《java程序设计》 第3周学习总结
1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识点组织起来.请使用工具画出本周学习到的知识点及知识点之s间的联系.步骤如下: 1.1 写出 ...
- Storm介绍&实际开发注意事项
一.使用组件的并行度代替线程池 Storm 自身是一个分布式.多线程的框架,对每个Spout 和Bolt,我们都可以设置其并发度:它也支持通过rebalance 命令来动态调整并发度,把负载分摊到多个 ...
- 杭电多校第七场 1010 Sequence(除法分块+矩阵快速幂)
Sequence Problem Description Let us define a sequence as below f1=A f2=B fn=C*fn-2+D*fn-1+[p/n] Your ...
- pytest 的 yield
前言:1.当 pytest.fixture(scope="module") 时,pytest的yieId 类似unittest的teartownclass 2.当 pytest.f ...
- L267 How to save money
When it comes to saving money, the struggle is all too real. It's like your bank account and your 20 ...
- nginx保持会话的方式
1)ip_hash 简单易用,但是有如下缺点 后端服务器宕机后,session会丢失 来自同一局域网的客户端会被转发到同一个后端服务器,可能导致负载失衡 不适用CDN网络,不适用于前段还有代理的情况 ...
- laravel 添加验证码
1. 安装依赖 composer require gregwar/captcha 2.使用 use Gregwar\Captcha\CaptchaBuilder; use DB; use Requ ...
- box-sizing布局
box-sizing 语法:box-sizing: content-box | border-box | inherit; 参考: https://www.jianshu.com/p/e2eb0d8c ...
- Java应用集群下的定时任务处理方案(mysql)
Java应用集群下的定时任务处理方案(mysql) 因为自己有csdn和博客园两个博客, 所以两边都会发一下. csdn地址: http://blog.csdn.net/u012881584/ar ...
- Spring Boot 揭秘与实战 附录 - Spring Boot 公共配置
Spring Boot 公共配置,配置 application.properties/application.yml 文件中. 摘自:http://docs.spring.io/spring-boot ...