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 学习的更多相关文章

  1. 学习unity的第一个小游戏(Roll the ball)的笔记

    1.摄像机的跟随运动,逻辑就是保持摄像机跟主角的距离不变(Undate()函数). offset=trandform.position-player.position. Undate() { tran ...

  2. Roll A Ball

    GameObject的添加就不细说了,地面,小球和碰撞小物体. 刚体组件(Rigidbody): 使物体能够模拟物理效果,比如重力,碰撞,推力等: 控制小球移动的脚本(Script,Ball的脚本): ...

  3. 关于Roll A Ball实例练习记录

    学习中不段进步! 游戏思路:通过键盘控制白色小球,让它"捡起"柠黄色方块,捡起一个加1分,全部捡起游戏胜利! 游戏对象: Ground:绿色地面 player:  小球 Obsta ...

  4. 1.1.0 Unity零基础入门2——Roll a Ball

    1. 游戏界面 2.代码 //FoodRotate - - 控制cube旋转 using System.Collections; using System.Collections.Generic; u ...

  5. Siki_Unity_1-2_Unity5.2入门课程_进入Unity开发的奇幻世界_Roll A Ball

    1-2 Unity5.2入门课程 进入Unity开发的奇幻世界 任务1:Roll A Ball项目简介 Unity官网的tutorial入门项目 方向键控制小球在平台上滚动,碰撞方块得分,消掉所有方块 ...

  6. URAL 1775 B - Space Bowling 计算几何

    B - Space BowlingTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/ ...

  7. egret贝塞尔曲线运动

    class MtwGame { public constructor() { } private static _instance: MtwGame; public static get Instan ...

  8. Ethereum Learning Materials

    Home 注:本页为 EthFans 站内文章精选集.鉴于文章的采集范围较广,我们无法保证文章内容没有重复,也不能保证排列的顺序实现了最优的认识路径.我们只能说,这些文章是我们精挑细选后,确认可以长期 ...

  9. JAVAAPI学习之Calendar类;Calendar类set()、add()、roll()方法区别

    JAVAAPI学习之Calendar类 http://blog.csdn.net/myjlvzlp/article/details/8065775(写的很好,清晰易懂) Calendar类set(). ...

随机推荐

  1. 踩坑 net core

    webclient   可以替换为 HttpClient 下载获取url的内容: 证书: https://stackoverflow.com/questions/40014047/add-client ...

  2. Centos7下cratedb数据导入导出copy to copy from

    crate 创建表结构: 查看表: show tables; 创建表结构: create table tablename (k1 type,k2 type,k3 type);  (type = int ...

  3. 分布式ID设计方案

    分布式ID的定义: 全局唯一 有序性 有意义 高可用 紧凑性 序列号的可预测性 方案1:使用数据库递增的顺序 最常见的方式.利用数据库,全数据库唯一. 优点: 1)简单,代码方便,性能可以接受. 2) ...

  4. Java语法基础学习DayNine(Java集合)

    一.Java集合 1.概述 一方面,面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就需要对对象进行存储.另一方面,使用Array存储对象具有一些弊端,而Java集合就像一种容器, ...

  5. day 26面向对象 的封装 接口 抽象

    大纲分析 # 面向对象# 类 :一类具有相同属性和方法的事物 #类的定义:class #类中可以定义的方法种类: #普通方法 self 对象 #类方法 cls @classmethod 类/对象 #静 ...

  6. 转--HC05-两个蓝牙模块间的通信

    示例蓝牙: 蓝牙A地址:3014:10:271614 蓝牙B地址:2015:2:120758 //============================================= 步骤: 1 ...

  7. 5-log4j2.xml配置文件各个节点详解

    具体配置参考官网:http://logging.apache.org/log4j/2.x/manual/configuration.html 一.log.xml文件的大致结构 <?xml ver ...

  8. finfo_file

      本文实例讲述了PHP使用finfo_file()函数检测上传图片类型的实现方法.分享给大家供大家参考,具体如下: 在输入输出中,文件的交互必不可少,比如文件的上传什么的.这里我们来解决一个小问题, ...

  9. HDU 2013(递归)

    Problem Description 喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题!什么问题?他研究的问题是蟠桃一共有多少 ...

  10. HDU 1205 吃糖果(想想题)

    题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=1205 Problem Description HOHO,终于从Speakless手上赢走了所有的糖果, ...