在场景中创建一个小球,这个小球就是平衡游戏的主角,让小球滚动来,通过控制滚动的方向来实现平衡.

搭建场景如下:

给小球添加刚体和Sphere Collider

:

然后简单粗暴上脚本:挂载到Ball上

using UnityEngine;
using System.Collections;public class BallMovement : MonoBehaviour {        // attach this script to ball// Use this for initialization, change values in Inspector for tweakingpublic float normalForce = 200.0f;public float boostForce = 15000.0f;public float maxSpeed = 50.0f;private GameObject ball;private bool boostActive;private Vector3 ballStartPosition;private Vector3 ballDirection, ballForward; private Vector3 ballPosition1, ballPosition2; // used to determine the effective movement of the ball between updatesprivate float directionHorizontal, directionVertical;private float distanceToGround; // used to check if ball is on groundvoid Start () {distanceToGround = GetComponent<Collider>().bounds.extents.y + 0.1f;  // 初始化并增加安全系数以解释不平整的地面ballStartPosition = transform.position;  // 存储启动位置在水平复位的情况下ballPosition1 = transform.position; //初始化运动向量,用来计算方向向量ball = GameObject.FindGameObjectWithTag(Tags.ball);if (ball == null) {Debug.LogError ("<color=blue>Marble Kit error:</color>: There needs exactly one object with the tag 'Ball' in the scene");}}void Update () // 在player上创建运动矢量{  directionHorizontal = Input.GetAxis("Horizontal");directionVertical = Input.GetAxis("Vertical");ballDirection.x = directionHorizontal;ballDirection.z = directionVertical;ballDirection.y = 0;boostActive = Input.GetKey("space");  // 添加一个加速的判断}void FixedUpdate()  // physics is executed during FixedUpdate, so we use this too{GetComponent<Rigidbody>().AddForce(ballDirection * normalForce * Time.deltaTime);  // add force/speed to ball in vector directionballDirection = Vector3.zero;                                     // 然后重置  否则力将持续不断的应用ballPosition2 = transform.position;  // create a forward vector = direction the ball moves effectively between updates. I found the .direction method not to yield good resultsballForward = ballPosition2 - ballPosition1;//创建一个正向向量=球在更新之间有效移动的方向。我发现,不会产生好结果的方向的方法if (boostActive && BallIsGrounded())  // 满足点击键盘空格键的布尔值,和在地面上{    ballForward.y = 0;GetComponent<Rigidbody>().AddForce(ballForward * boostForce * Time.deltaTime);}if (GetComponent<Rigidbody>().velocity.magnitude > maxSpeed)  // 限制最大速度{GetComponent<Rigidbody>().velocity = GetComponent<Rigidbody>().velocity.normalized * maxSpeed;}ballPosition2 = ballPosition1;    // 更改矢量以允许下一个球方向检查。ballPosition1 = transform.position;}public void ResetBallPosition(){this.transform.position = ballStartPosition;this.GetComponent<Rigidbody>().velocity = Vector3.zero;ball.SetActive(true);}bool BallIsGrounded() // checks if ball is on ground{return Physics.Raycast(transform.position, -Vector3.up, distanceToGround);}}

应用实例:平衡小球

平衡小球Demo下载:点击打开链接

http://download.csdn.net/detail/gaoheshun/9899079

Unity3D中平衡类游戏player的基本应用实例相关推荐

  1. 游戏开发小结——在unity3d中开发类塞尔达游戏的反冲效果

    游戏开发小结--在unity3d中开发类塞尔达游戏的反冲效果 在 2D ARPG 中为角色创建反冲效果 我们将在Unity中实现这个效果.首先,我们将进行演示场景的设置.我们将创建一个控制器(cont ...

  2. unity3d开发传奇类游戏3D

    传奇开发类游戏开发精讲 先上效果 技能治疗 技能伤害 近战 地图数据: vector2 数组.N行N列,描述地图大小.通过数据结构算法得出每个单元格的坐标 [x,y][x,y][x,y] [x,y][ ...

  3. Unity3D休闲射击类游戏《Survival Shooter》完整源码

    Unity3D休闲射击类游戏<Survival Shooter>完整源码分享给大家学习,这个对于那些想要制作u3d射击类游戏有很大帮助. 运行环境是:Unity5.3.1 下载地址: ht ...

  4. Unity3D中开发2D游戏——游戏玩家的出生、无敌、死亡方法

    关于2D游戏中游戏玩家的出生.无敌.死亡方法可以通过如下一个小实例详细讲解 我们小时候都玩过一款游戏--坦克大战 所以此实例为如何实现玩家坦克的出生.无敌.以及死亡方法 首先我们制作一个出生动画特效 ...

  5. 工具设置Unity3D系列教程--使用免费工具在Unity3D中开发2D游戏 第一节

    时间紧张,先记一笔,后续优化与完善. 声明:   本博客文章翻译类别的均为个人翻译,版权全部.转载请注明出处: http://blog.csdn.net/ml3947,另外本人的个人博客:http:/ ...

  6. 噩梦射手 安装包资源包提供下载 Unity官方教程 Survival Shooter 资源已经失效了!? Unity3D休闲射击类游戏《Survival Shooter》完整源码

    Unity官方教程 (Survival Shooter)  资源已经失效了! 可能是版本太老了 中文名叫噩梦射手? 找了半天找了这个版本 的 放到这里吧 [这个游戏主角是必死的,就看能坚持多久啦] 网 ...

  7. Unity3D中开发2D游戏——动画的制作

    动画的制作其实很简单 如果你是一个整张的素材 类似这种 选择你的素材Born 切换Sprite Mode 为Multiple模式 然后点击Sprite Editor 选择自动切割或者是按规定大小切割 ...

  8. Unity3D动作类游戏中两种相机抖动

    Unity3D动作类游戏中两种相机抖动 在动作类RPG游戏中,为了体现角色的技能和增加动作打击感,我们常常会给相机添加抖动效果来配合特效做一些技能效果. 我在网上搜了一下,然后结合自己的项目总结一下, ...

  9. Unity小游戏-平衡大师(安卓、PC、web)2D益智类游戏 项目展示+完整项目源码

    游戏录像 游戏试玩 平衡带师_平衡带师html5游戏_4399h5游戏-h.4399.com 游戏玩法 这是一款类似堆积木的游戏,它非常考验玩家的智商和手速,难度系数很高的游戏,谁能征服它,谁就是平衡 ...

最新文章

  1. Flash 组件定义(AS3)
  2. Dynamics CRM2013 任务列表添加自定义按钮
  3. 模拟物流快递系统程序设计java_路辉物流设备:大件快递自动分拣系统的模块化设计...
  4. Python实现学生信息管理(面向对象)
  5. northwind中文 for mysql_学习心得 | PHP与mysql通信的若干问题
  6. DJango — URL的Reverse和Resolve
  7. eclipse断点Source not found解决方案1,2,3
  8. Commit Message 规范
  9. POJ 1860 Currency Exchange 最短路+负环
  10. VisualStudioCode常用快捷键
  11. jQuery动画之显示隐藏动画
  12. 写给想学 Javascript 朋友的一点经验之谈
  13. c语言天数转换成周数,如何将周数转换为日期?
  14. 2021-11-1-无法在此设备上激活WINDOWS因为无法连接到你的组织的激活服务器
  15. 人体神经网络分布图高清,周围神经组成及分布
  16. Cache tier使用文档
  17. html给表格添加标题栏,word表格怎么添加标题栏 如何在word表格上方加标题
  18. 软件产品案例分析(团队)
  19. 3.C++函数调用过程
  20. mybatis开启日志打印

热门文章

  1. Openstack七大组件介绍
  2. Kotlin——高阶函数详解与标准的高阶函数使用
  3. TNS-12547: TNS:丢失连接
  4. VSCode插件开发 国际化
  5. 使用Mac移除文件的git版本控制
  6. 多账户的统一登录方案
  7. 云鲸扫拖一体机器人说明书_自己会洗抹布的拖地机器人-云鲸智能拖扫一体机器人简单评测...
  8. Java基础综合习题(二)
  9. Mac 如何修改用户名和用户文件夹
  10. 01-TypeScript简介