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(). ...
随机推荐
- 踩坑 net core
webclient 可以替换为 HttpClient 下载获取url的内容: 证书: https://stackoverflow.com/questions/40014047/add-client ...
- Centos7下cratedb数据导入导出copy to copy from
crate 创建表结构: 查看表: show tables; 创建表结构: create table tablename (k1 type,k2 type,k3 type); (type = int ...
- 分布式ID设计方案
分布式ID的定义: 全局唯一 有序性 有意义 高可用 紧凑性 序列号的可预测性 方案1:使用数据库递增的顺序 最常见的方式.利用数据库,全数据库唯一. 优点: 1)简单,代码方便,性能可以接受. 2) ...
- Java语法基础学习DayNine(Java集合)
一.Java集合 1.概述 一方面,面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就需要对对象进行存储.另一方面,使用Array存储对象具有一些弊端,而Java集合就像一种容器, ...
- day 26面向对象 的封装 接口 抽象
大纲分析 # 面向对象# 类 :一类具有相同属性和方法的事物 #类的定义:class #类中可以定义的方法种类: #普通方法 self 对象 #类方法 cls @classmethod 类/对象 #静 ...
- 转--HC05-两个蓝牙模块间的通信
示例蓝牙: 蓝牙A地址:3014:10:271614 蓝牙B地址:2015:2:120758 //============================================= 步骤: 1 ...
- 5-log4j2.xml配置文件各个节点详解
具体配置参考官网:http://logging.apache.org/log4j/2.x/manual/configuration.html 一.log.xml文件的大致结构 <?xml ver ...
- finfo_file
本文实例讲述了PHP使用finfo_file()函数检测上传图片类型的实现方法.分享给大家供大家参考,具体如下: 在输入输出中,文件的交互必不可少,比如文件的上传什么的.这里我们来解决一个小问题, ...
- HDU 2013(递归)
Problem Description 喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题!什么问题?他研究的问题是蟠桃一共有多少 ...
- HDU 1205 吃糖果(想想题)
题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=1205 Problem Description HOHO,终于从Speakless手上赢走了所有的糖果, ...