位置: 编程技术 - 正文

Unity3d游戏开发之主场景视差效果开发心得(Unity3D游戏开发标准教程吴亚峰于复兴人民邮电出版社)

编辑:rootadmin
效果图分析 什么是视差滚动?度娘的解释:让多层背景以不同的速度移动,形成立体的运动效果。从效果图可以看出,主场景背景大致分为3层,草地、山河还有云彩,每一层的速度都不一样。接着分析,虽然度娘的解释是以速度来阐述,但用速度来计算并不合适,因为主层(即草地层)的滚动是跟随我们手指的移动,所以应该把速度转换为位移来计算。既然用位移来计算,每一层的位移不同,怎么样才能把多个层同步起来,我使用了归一化方法,把整个场景的滚动看作是0~1之间的归一化位移,每个层的滚动只需乘以各自层的最大位移。有了归一化位移来实现视差滚动,接下来就是让场景的滚动跟随手指移动,现在其实很好实现,只需要根据手指移动的距离(X方向)和主层的最大位移计算。最后要分析的就是惯性,在手指离开屏幕后场景仍将滚动一段时间,其实就是一个减速运动。(终于分析完了,人家不会分析,憋到现在已经内伤了 )实现第一步,实现SetPosition()方法,通过这个方法设置归一化位置,然后将所有层移动到正确位置。public Transform[] Layers;//每个层的Transform。 public float[] Offsets;//对应每个层的最大位移。 int count; float location;//定义归一化位置。 void Start () { count = Layers.Length; }public void SetPosition(float position) { location = Mathf.Clamp(position); for (int i = 0; i < count; i&#;&#;) { Layers[i].localPosition = new Vector3(Offsets[i] * location ,0, 0); } }复制代码 当location为0时显示各个层最左边的内容,为1时显示各个层最右边的内容。将各个层的根节点赋给Layers属性。如下图所示:整体效果如下: 然后将层往左边移动直到显示最右边的内容,这个时候根节点的X坐标就是我们要的最大位移,将这个&#;赋给对应的Offsets(这个&#;为负数)。第二步,实现手指跟随的滚动。bool dragged;float lastTouch;float dragOffset;float touchToPos;void Start (){ count = Layers.Length; dragged = false; touchToPos = 1f / Screen.width * camera.orthographicSize * 2f * camera.aspect / Mathf.Abs(Offsets[0]);}void Update (){ if (Input.GetMouseButtonDown(0)) { dragged = true; lastTouch = Input.mousePosition.x; } if (Input.GetMouseButtonUp(0)) { dragged = false; } if (dragged) { float currTouch = Input.mousePosition.x; dragOffset = lastTouch - currTouch; lastTouch = currTouch; dragOffset *= touchToPos; location &#;= dragOffset; SetPosition(location); }}复制代码 这段代码就是计算每次手指移动时,场景归一化位置改变量——dragOffset,并将该量与当前location相加后使用SetPosition来更新各个层。第三步,实现惯性。更多精彩请点击【狗刨学习网】bool tweened;float tweenTime;const float MaxTweenTime = 0.5f;void Start (){ count = Layers.Length; dragged = false; tweened = false; touchToPos = 1f / Screen.width * camera.orthographicSize * 2f * camera.aspect / Mathf.Abs(Offsets[0]);}void Update (){ if (Input.GetMouseButtonDown(0)) { dragged = true; tweened = false; lastTouch = Input.mousePosition.x; } if (Input.GetMouseButtonUp(0)) { dragged = false; tweened = true; tweenTime = 0f; } if (dragged) { …… } else if (tweened) { tweenTime &#;= Time.deltaTime; if (tweenTime > MaxTweenTime) { tweened = false; } else { float offset = dragOffset * (1 - tweenTime / MaxTweenTime); location &#;= offset; SetPosition(location); } }}复制代码 这里利用到第二步中所计算的dragOffset,将最后一次计算(即手指离开屏幕前)得出的dragOffset在最大惯性时间MaxTweenTime内减为0并累加到location上,以达到减速运动的效果,而且移动的距离和手指移动的速度相关。终于写完了,还是代码爽

推荐整理分享Unity3d游戏开发之主场景视差效果开发心得(Unity3D游戏开发标准教程吴亚峰于复兴人民邮电出版社),希望有所帮助,仅作参考,欢迎阅读内容。

Unity3d游戏开发之主场景视差效果开发心得(Unity3D游戏开发标准教程吴亚峰于复兴人民邮电出版社)

文章相关热门搜索词:Unity3D游戏开发毕业论文,Unity3D游戏开发pdf,Unity3D游戏开发(第2版),Unity3D游戏开发(第2版)pdf,Unity3D游戏开发标准教程,Unity3D游戏开发标准教程,Unity3D游戏开发(第2版),unity3D游戏开发,内容如对您有帮助,希望把文章链接给更多的朋友!

unity自带寻路Navmesh入门教程(一) unity自从3.5版本之后,增加了NavMesh寻路的功能。在此之前,unity用户只能通过第三方插件(如Astar寻路插件)等做寻路功能。阿赵我也使用过A*寻路插件

【unity3D】单点和多点触控 【狗刨学习网】总结:Input.touchCount获取当前的触摸点数目,若为1则是单点触控,大于1则是多点触控点击事件用:Input.GetTouch(num).phase==TouchPhase.Began这样

unity3D新闻:HTML5标准最终确定 体验或将有所改变 狗刨学习网报道:万维网联盟(WorldWideWebConsortium,简称W3C)近日发布了HTML5标准的推荐版,并将其命名为用于创建网页与应用程序的HTML5标准的终极版。

标签: Unity3D游戏开发标准教程吴亚峰于复兴人民邮电出版社

本文链接地址:https://www.jiuchutong.com/biancheng/372997.html 转载请保留说明!

上一篇:Unity3D游戏开发之Unity打包APK(Unity3D游戏开发标准教程吴亚峰于复兴人民邮电出版社)

下一篇:unity自带寻路Navmesh入门教程(一)(unity寻路系统)

  • 补缴的社保可以报销吗
  • 税法的分类都有什么
  • 投资性房地产公允价值模式出售
  • 社保的滞纳金放什么科目
  • 个税申报月份错了怎么改
  • 银行转账支付凭证有效期多久
  • 暂估收入的必要条件
  • 没有进项发票出口转内销
  • 应付账款暂估余额
  • 用友t3年末怎么结转
  • 使用权资产计入资产负债表哪个科目
  • 410768金税盘
  • 应收账款科目怎么写
  • 小规模企业应交增值税的二级科目
  • 盈利能力分析对企业发展的意义
  • 展会门票费计入什么科目
  • 帮别的公司做账的叫什么公司
  • 增值税专用发票和普通发票的区别
  • 我公司开给对方13个点发票,后期我公司怎么抵税
  • 一般纳税人外经证预缴怎样缴费
  • 总资产周转率多少算高
  • 企业产品成本的构成项目主要有哪些
  • 销售原材料会计分录,款项已收
  • 税法对开办费的怎么汇算清缴
  • i7笔记本cpu性能天梯图
  • Win10升级win11是激活状态吗?
  • 认缴出资日期是2050什么意思
  • 其他应付款冲回计入哪个科目
  • 结转本月各项损益
  • 房屋出租预收租金房产税纳税义务发生时间
  • php 替换
  • 国有企业上缴利润的账务处理怎么处理?
  • 电脑开机时出现用户账户控制提示
  • 会计上社保的分录是什么
  • 房开企业增值税扣除土地价款包括契税吗
  • java中ne
  • ai生成图形
  • 新准则下公允价值变动损益纳税调整
  • 前端 自动化脚本 怎么写
  • bootz命令
  • pgrep命令详解
  • 自产产品对外赠送的会计处理方法
  • 企业内部研究开发项目开发阶段的支出
  • 税控盘全额抵扣政策
  • 事业单位财政拨款收入会计分录
  • 企业签发银行承兑汇票支付采购款
  • 物流公司驾驶员工资计算方式
  • 会计信息采集每年都要采集吗
  • 一般纳税企业增值税的核算应当使用
  • 一般纳税人在任何情形下都可以领购使用增值税专用发票
  • 核销坏账递延资产怎么算
  • 企业所得税的营业成本怎么填
  • 场地无偿使用证明的作用是什么
  • 企业返聘退休人员需要交社保吗
  • 定额备用金与非备用金
  • 不动产出租要交什么税
  • 暂估入账的固定资产
  • 财务会计制度及核算软件备案怎么填写
  • 小规模如何申报1个点
  • 确定收入 记账凭证摘要怎么写
  • 公司增资认缴
  • sqlserver删除数据语句
  • sqlserver多表关联查询
  • winxp系统纯净版
  • mac的command键相当于pc的什么键
  • 创建svn库
  • pcs system
  • xp蓝屏事件
  • ubuntu设置启动项
  • 如何查看电脑端口号
  • tracert命令的功能和用法
  • w7提高开机速度
  • mac安装osx失败
  • python自动化处理
  • django环境配置
  • Emeditor与dos(cmd)经典使用技巧之批量生成网页
  • 一个治疗Unity的Prefab强迫症患者的小招(Prefab变成红色的问题)
  • 如何查询甘肃省清产核资系统扶贫项目资产金额
  • 外贸公司销售额可以10亿以上吗
  • 上饶国资委领导班子成员名单
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设