昨天是实现了显示GameObject子GameObject的选项卡功能,今天就是要让statusPanel可以控制它们的位置、旋转和缩放了。

  没什么难的,对应选项卡绑定上对应的物体或子物体即可。

  删除操作的话只需要在删除当前选项卡之前递归地删除它的子孙选项卡和对应的模型即可,隐藏的话也是递归地将他们的active设置为false。

  由于smpl模型只有一个skinnedMeshRenderer,然而网格的各个部分是绑定在它的子对象中的,如何获得各种变换后对应网格的顶点坐标呢?

  使用BakeMesh方法即可,用法是先new一个mesh作为容器,然后调用该方法就能把经过各种乱七八糟变换后的mesh的snapshot(快照,就是网格渲染的样子,也是Mesh类型)存入括号里的mesh。

  比如我的OnClick方法是这么写的,就是点击按钮后会在网格的每个顶点坐标生成一个半径为0.1的球:

public void OnClick()
{
Mesh mesh= new Mesh();
smr.BakeMesh(mesh);
foreach(var item in mesh.vertices)
{
var a=GameObject.CreatePrimitive(PrimitiveType.Sphere);
a.transform.position = item;
a.transform.localScale = new Vector3(0.1f,0.1f,0.1f);
}
}

  变换前:



  只旋转子对象:



  点击按钮:



  不过对最外层的变换貌似只响应scale变换,position和rotation的变换却没反应,但是对于直接导入的obj模型是这三类属性都不响应的,真奇怪。

  没办法,只能禁用最外层的scale编辑了...

  smpl模型也不能增加三角形数量,于是也把smpl模型三角形数量编辑给禁了。

  关节点的话只能编辑旋转,编辑position的话会产生很鬼畜的结果,所以把关节点的position和scale也禁了。总之哪里不对禁哪里。



  也相应地把计算接触点那里改成适应skinnedMeshRenderer的版本,来看看效果吧:

  先调好人的姿势以及和椅子的位置:





  然后计算接触点:





  看上去还挺正常的。不过接触点貌似太黑了点,要是红红的就好看一些,应该是阴影的问题。

  于是加了这两行代码:

//不产生阴影也不接收阴影
mr.receiveShadows = false;
mr.shadowCastingMode =UnityEngine.Rendering.ShadowCastingMode.Off;

  然而还是有些接触点是黑色的,这些都是卡在另一个模型里没有光线照射到的球:



  应该能够用设置layer的方式来解决这个问题,给接触点设置为单独的层,然后新建light再设置light的culling mask,只照射接触点所在层就行了:



  最后用一个哲♂学场景测一下效果:











  可以发现所有接触点在光线的照射下熠熠生辉,我成功地驱逐了黑暗!

最新文章

  1. 转载《Android-TabHost 选项卡功能用法详解》
  2. 课堂Beta发布140字评论
  3. 《理解 ES6》阅读整理:函数(Functions)(一)Default Parameter Values
  4. 一头扎进EasyUI
  5. [NOIP2009] 提高组 洛谷P1071 潜伏者
  6. JAVA非空条件三元运算符
  7. 编程实现LINUX下目录的层层遍历
  8. mysql_insert_id 为什么会返回空值
  9. cf413E Maze 2D
  10. BNU Online Judge-34973-Liserious战队
  11. vsftpd配置虚拟用户
  12. [Union]C++中Union学习笔记
  13. 1.5分布式通讯框架-RMI
  14. 「Python」数据清洗常用正则
  15. Python3.7和数据库MySQL 8.0.12 绿色解压 安装教程(一)
  16. Spring事件通知机制
  17. [Java 泥水匠] Java Components 之二:算法篇之项目实践中的位运算符(有你不懂的哦)
  18. 前端-JavaScript1-1——JavaScript简介
  19. vuex 的使用
  20. centos 6.8 启动损坏修复实验

热门文章

  1. Invoice Helper
  2. Spark在实际项目中分配更多资源
  3. openwrt procd启动流程和脚本分析
  4. 19-21Consent Page页实现
  5. 20154327 Exp5 MSF基础应用
  6. 北京Uber优步司机奖励政策(4月6日)
  7. 4 进程间通信Queue [kjuː]
  8. Android stdio build.gradle buildscript 里面的repositories 和allprojects里面 repositories 的区别
  9. spring之HttpInvoker
  10. SQL 怎么实现模糊查询?