[Unity游戏开发]向量在游戏开发中的应用(一)
本文已同步发表在博客园:http://www.cnblogs.com/davidsheh/p/5246213.html
-----------------------------------------------------------------------------------------------------------------------------------------------
向量在游戏开发中是非常实用的,我们在学校学完向量的知识后,只知道向量的基本知识,但对于如何将所学到的向量知识运用到实际的游戏开发中却不知所措。我计划写几篇关于向量在游戏中的应用的文章,总结一下在实际工作中所遇到过的运用向量机智处理问题的技巧。接下来要写的东西都是记录在我的云笔记中,现在计划整理一下后分享出来。
对于向量的那些基本性质我不想说太多,有兴趣的读者可以自行查阅相关文档,这里只说向量的大小和方向。不知道读者朋友曾经玩过安卓上一款比较火的跳跃游戏没有,游戏名字叫《涂鸦跳跃》,英文名为「Doodle Jump」,游戏截图如下:
在玩《涂鸦跳跃》时,不知道你有没有想过这么一个问题:从下往上跳跃会直接穿过平台,从上往下掉不会穿过平台,这是如何实现的?
关于这个问题,我的思考是:可以利用小人运动的速度的方向来判定是否启用碰撞体,速度方向向上时禁用碰撞体,速度方向向下时启用碰撞体。可能我说的这个思路读者朋友还是不明觉厉,下面我用Unity3D写了一个小Demo来帮助理解我的思路。
先上动态效果图:
具体实现代码如下:
using UnityEngine;
using System.Collections;public class PlayerController : MonoBehaviour {public Vector3 jumpForce = new Vector3(10, 35, 0);private Rigidbody mRigidbody;private BoxCollider boxCollider;// 是否处于碰撞状态private bool stayCollision = false;void Awake () {this.mRigidbody = this.GetComponent<Rigidbody>();this.boxCollider = this.GetComponent<BoxCollider>();}void Update () {// 当刚体静止时,按空格键跳跃才有效if(mRigidbody.IsSleeping() && Input.GetKeyDown(KeyCode.Space)){// 给刚体施加一个力,是其运动起来this.mRigidbody.AddForce(jumpForce);}if(this.mRigidbody.velocity.y > 0) // 速度方向向上{// 这里不能重复设置isTrigger,否则IsSleeping()方法会失效// 这里具体原因不得而知,因为被官方封装起来了,// 但是猜测是因为刚体规定自身方法没有调用时为休眠状态if (!this.boxCollider.isTrigger) this.boxCollider.isTrigger = true;}else if (!stayCollision) // Player没有发生碰撞{if (this.boxCollider.isTrigger)this.boxCollider.isTrigger = false;}}void OnTriggerEnter(Collider collider){stayCollision = true;}void OnTriggerExit(Collider collider){stayCollision = false;}
}
在这个小案例中,运用了速度向量的方向来判断是向上碰撞还是向下碰撞。作为《向量在游戏开发中的应用》这个小系列文章的第一篇,就用这个非常简单的小案例来开始吧。后续会更精彩,但更新时间不定。
本Demo使用的的开发工具是Unity5.0.1f1和VS2013,建议下载源码后用Unity5.0.1f1或者更高的版本打开。源码地址:http://download.csdn.net/detail/wenxin2011/9453669
------------------------------------------------------------------------------------------------------------------
声明:本文欢迎转载和分享,但是请尊重作者的劳动成果,转载分享时请注明出处:http://blog.csdn.net/wenxin2011/article/details/50810102。
[Unity游戏开发]向量在游戏开发中的应用(一)相关推荐
- Unity游戏开发——向量运算(点乘和叉乘)
Unity游戏开发--向量运算(点乘和叉乘) 0.前言 在游戏开发中,确定目标得方向,朝向,夹角等相关数据需要用到向量的计算,其中最常用到的就时点乘和叉乘. 因为我们主要研究的是游戏开发中的3D世界向 ...
- 向量在游戏开发中的应用(一)
向量在游戏开发中是非常实用的,我们在学校学完向量的知识后,只知道向量的基本知识,但对于如何将所学到的向量知识运用到实际的游戏开发中却不知所措.我计划写几篇关于向量在游戏中的应用的文章,总结一下在实际工 ...
- Unity 3D数学\图形学基础-游戏开发(向量)
Unity 3D数学\图形学基础-游戏开发(向量) 向量运算的几何意义 标量与向量的计算 向量的模长 标准化向量 normalize 0向量 向量与向量的加减法 两点间距离公式(向量间距离) 点积,点 ...
- Unity 2D游戏开发教程之游戏中精灵的跳跃状态
Unity 2D游戏开发教程之游戏中精灵的跳跃状态 精灵的跳跃状态 为了让游戏中的精灵有更大的活动范围,上一节为游戏场景添加了多个地面,于是精灵可以从高的地面移动到低的地面处,如图2-14所示.但是却 ...
- Unity从头开始开发增强现实(AR)游戏学习教程
使用Unity 2021构建增强现实飞镖游戏 学习从头开始开发增强现实(AR)游戏,使用AR基金会,货币化,发布游戏玩商店 Build a Augmented Reality Dartboard Ga ...
- unity开发入门_Unity游戏开发终极入门指南
unity开发入门 Unity is a great tool for prototyping everything from games, to interactive visualisations ...
- 游戏设计、原型与开发:基于Unity与C#从构思到实现pdf
下载地址:网盘下载 这是一本将游戏设计理论.原型开发方法以及编程技术巧妙结合在一起的书籍,目的是填补游戏设计与编程开发之间的缺口,将两者联系起来.随着 Unity游戏开发技术趋于成熟,游戏设计师把自己 ...
- 《Unity着色器和屏幕特效开发秘笈》—— 第3章 利用镜面反射让游戏闪耀起来...
本节书摘来自华章出版社<Unity着色器和屏幕特效开发秘笈>一 书中的第3章,第3.1节,作者:(美)Kenny Lammers,更多章节内容可以访问云栖社区"华章计算机&quo ...
- Unity游戏开发日记(一):独自开发2d横板游戏:Small man(MainMenu主界面)基本构建
目录 一.独自开发想法 前言: 开发构想: 二.主要内容:MainMenu主界面基本构建 (一)预想功能 (二)功能实现 1.主界面UI设计 2.Option功能设计 3.TypeOption功能设计 ...
最新文章
- Linux中autoduck批量对接,科学网—用AutoDock进行分子对接教程——半柔性对接 - 杜文义的博文...
- mysql 慢日志 作用_MySQL慢查询日志的作用和开启
- R语言使用ggplot2包的快速可视化函数qplot绘制散点图(设置每个数据点的文本标签信息)实战
- 解决set /p yn= 接受键盘输入导致ECHO 处于关闭状态的问题
- python读取excel部分值存入另一个excel-python3读取excel文件只提取某些行某些列的值方法...
- Qt显示中文ansi字符串乱码问题解决方案
- leetcode 357. Count Numbers with Unique Digits | 357. 计算各个位数不同的数字个数(Java)
- 对话阿里敏捷教练 | 成功辅导过淘宝、闲鱼,他都是如何帮助团队
- ResNet 运行在Cifar10 测试集86.38% Tensorflow 2.1 小白从代码实践中 理解
- 余额 微信钱包图片_微信红包技巧:关闭这个功能,不上传身份证也能正常使用!...
- [跟我学中小企业架构部署]之八:备份服务器部署
- 自定义控件--CircleImageView(类似于QQ、微信圆形头像自定义控件)
- github上一些酷炫效果
- 《Java核心技术 卷12》读书笔记
- 西门子Step7和TIA软件“交叉引用”的使用
- php编写程序制作图形验证码,php实现图形验证码详解!
- HTML5期末大作业:仿唯品会购物网站设计——仿唯品会购物商城(5页) HTML+CSS+JavaScript 学生DW网页设计作业成品 商城网站设计
- Mysql数据库【触发器】
- OSPF prefix-suppression Test
- createprocess函数的参数说明:
热门文章
- 华为OD机试题 - 机器人走迷宫(JavaScript)
- 基线_基线检查平台之Linux与Windows
- “会员制营销”和“EMAIL营销”
- E: The repository ‘http://ppa.launchpad.net/appimagelauncher-team/stable/ubuntu bionic Release‘ does
- vue文件目录结构详解(一)---基础配置
- 聊聊BIO,NIO和AIO
- 赛博朋克风格的科技合成制作
- 手绘线条一直画不直_什么?直线画不直?戳进来,你会满载而归!
- 时尚秀9元港韩混搭服饰K847弃用职业模特 让真实的女人上封面
- pcb设计单点接地示意图_PCB设计中的单点接地, 多点接地, 浮地和混合接地你都知道吗...