2018.11

本文围绕游戏开发展开,介绍了监听动画状态、摄像机切换、遍历子物体、动画过渡、随机数使用等方面的技巧和方法。如通过继承StateMachineBehaviour监听动画,利用WorldToScreenPoint等实现摄像机坐标转换,还给出了物体分配、视图调节等问题的解决方案。

1、监听动画状态,通过继承StateMachineBehaviour,来监听进入和退出,但是每次setActive()都需要重新监听,可以放到OnEnbled。代码参考博客《https://blog.youkuaiyun.com/jason_520/article/details/54630820

2、摄像机切换,一个物体在两个摄像机中切换,首先设置layer改变,可以通过第一个摄像机把世界坐标转化到屏幕上面,再通过第二个摄像机从屏幕转化到世界坐标系(WorldToScreenPoint/ScreenToWorldPoint)。

3、GameObject.name.Contains(),name都是继承String,一般的继承Monobehaiour,都有这个name属性,可以使用String的属性,通过Contains来判断name是否包括没有这个字符。

4、使用 GetComponentsInChildren来遍历子物体的时候,会遍历自身 ;使用 foreach (var item in Transform),可以获得子物体下所有的Transform,不包括自身和子物体的子物体

5跑步动画的过程,可以转向和起步加速,通过动画系统的混合树系统,通过参数来控制动画过渡,使用TimeLine做过程动画。

6、随机数使用using System.Linq;_randomNum.Distinct().ToList();
  List<int> Num = new List<int>();
  while (Num.Count<15)
  {
    Num.Add(Random.Range(0, 15));
    Num = Num.Distinct().ToList();
  }

7、四种物体,每个三种,四个顺序不变的四种物体按钮,一共十二个字每个字对应一个物体。
  做法:先随机一个12不按照顺序的数字,然后按照按钮顺序对应每种物体分配三个,取的顺序数组的值/3得到对应按钮的顺序,可以对存储字的数组进行位置交换,把正确答案的索引换到对应按钮的索引位置
  //add获得按钮索引和单词索引
  int buttonIndex = _randomNum[_currentPosition] / 3;
  int wordIndex = words.IndexOf(targetWord);

  //交互word的字
  WordData temp = words[buttonIndex];
  words[buttonIndex] = words[wordIndex];
  words[wordIndex] = temp;

8、摄像机nearClipPlane和fieldOfView共同调节视图大小,一个是控制摄像近裁剪平面大小,一个控制这个视角大小。

9、移动模型搭建模型的时候会有穿透,设置一个相机专门渲染当前被搭建的物体块,当移动被渲染物体是改变渲染物体层级。同时注意模型的pivot和center模式,改变position都是获得pivot模式下的。

10、旋转朝向问题,不使用lookat的时候,使用两个点向量,使用Quaternion.LookRotation(forwardDir);求出四元数求出角度都可以,注意旋转对象时物体坐标轴一定和世界坐标轴保持一致,才能完美旋转,不然需要可能需要更改对应轴的值,这时候需要建立一个空物体给父对象用来对准世界坐标轴
11、使用dotween的时候,做延迟可能又有一些错作为警告不会报出来,即在循环函数里面做延迟和监听都是不同步的不能采用循环的i来进行相关操作,因为循环会先执行完毕,

后者bug参考闭包问题https://www.cnblogs.com/HQFZ/p/4903400.html


转载于:https://www.cnblogs.com/JUNLLLL/p/10553348.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值