最近在开发一个植物大战僵尸小游戏,今天写了一早上的代码,踩了两个坑,这两个坑的位置分别位于触发器和数据转换,写这篇博文以此来让其他程序员不要再去踩这两个坑。

1.我在做简易僵尸模型的时候,这个僵尸模型的父对象是一个空物体,然后碰撞体是加在子物体上,然后在父物体上设了tag为Zombie,子物体没有设标签。

我在开发豌豆射手发射的子弹的过程中,我一开始给子弹加的时Sphere Collider ,没有勾选触发器。然后发射了这个子弹之后会碰撞到僵尸,在僵尸身上的碰撞检测的回调函数里通过tag来判断一切正常;

后来需求有变,把子弹设为了Trigger(勾选了Trigger)。然后在僵尸身上的触发检测里面通过tag检测不到子弹的碰撞,为什么碰撞检测可以正常检测而触发检测就检测不到呢????

经过我的debug,才发现,对于碰撞检测来说,虽然碰撞体是在子物体里,标签是在父物体里,当时还是可以通过标签来判断与之碰撞的物体;

而触发检测就不一样了,进入触发器的那个物体的碰撞体和 标签不在同一个物体上,那触发检测就检测不到。

后来我就把把带有碰撞体的物体的标签也改了,然后就可以正常通过标签来判断进入触发器的物体。

2.第二个就是我们有些时候要返回物体的某个轴的坐标,然后要把它转为整数,但是要知道,假如你这样  (int)this.gameObject.transform.position.x   ;这样是极容易出现问题的,有时,对于位置信息,比如,一个物体在x轴的准确位置为1,然后unity会把它变成0.999999,这样你再通过(int)强制转换不就成了0,然后就造成了Bug,还比较难于发现。所以在类似操作的时候,你可以

int index =(int) Mathf.Round(this.gameObject.transform.localPosition.x);

这样,加个Mathf.Round();这个函数是四舍五入,就不会出错。

最新文章

  1. Mongodb基本操作说明
  2. Autodesk 360 Mobile不能显示图片?
  3. ssh连接失败,排错经验
  4. MYSQL基础知识总结
  5. OpenStack 的Nova组件详解
  6. UITableViewStyleGrouped 模式下 headview 多出一块高度问题
  7. [GRYZ2015]快排练习
  8. asp.net生成二维码的方法
  9. 单片机脚本语言-移植lua到stm32-MDK
  10. CI框架微信开发-自定义菜单
  11. SqlServer-COMPUTE BY
  12. Java(多态练习 instanceof)
  13. 让textarea和附近的文字居中对齐
  14. POJ3335 POJ3130 POJ1474 [半平面交]
  15. 给大家带来一些 horm的一些知识!
  16. python IDE PyCharm的安装
  17. 【DDD】使用领域驱动设计思想实现业务系统
  18. poj-1061-exgcd
  19. LVS专题-(1)LVS基本介绍
  20. MySQL基础(二):视图、触发器、函数、事务、存储过程

热门文章

  1. python基础---集合类型(Sets)
  2. js中字符串拼接html
  3. uni-app获取dom元素到顶部的距离以及操作dom元素的一些样式
  4. oracle中=>是什么意思呢?
  5. Pytorch实现MNIST(附SGD、Adam、AdaBound不同优化器下的训练比较) adabound实现
  6. H3C 单播与广播
  7. H3C ACL规则的匹配顺序
  8. Codeforces Round #184 (Div. 2)
  9. Springboot-webscoket with sockjs
  10. 关于scipy包的安装