您的位置:首页 > 移动开发 > Unity3D

unity3D常见问题

2014-04-28 14:01 190 查看

总结自己在学习中遇到的问题。记录问题,帮助他人,有什么不对的地方欢迎指正

没有发生碰撞

两个物体(Plane和Cube)都添加了collider,其中一个添加了rigidbody,应该会产生碰撞,可是当运行时,cube总是掉下去.很纳闷,
经过仔细研究,发现 Plane和Cube的Transform.position Y 相同,也就是两个物体的Y坐标一样,两个物体是相接触的,所以没有发生碰撞






==================================================================================================================

Plane与rigidbody

Compute mesh inertia tensor failed for one of the actor's mesh shapes! Please change mesh geometry or supply a tensor manually!

在Plane上添加了rigidbody,于是弹出这个错误,
解决办法,给mesh collider 的Convex 参数打上勾.或者改变collider,用薄的box来代替plane




==================================================================================================================

Screen.showCursor = false没用

在Game视图下不起作用了,刚开始还起作用的。
解决方法:发布游戏,在游戏里就看不到鼠标了(可能是视图的原因,也可能unity存在bug)
==================================================================================================================

在摄像机里找不到物体

观察相机的XYZ坐标,与物体的XYZ坐标。是不是重合.看Y看是不是在同一个高度,看Z,看是不是距离太远,或者物体在相机的背面,看X,看物体是不是在相机左侧或右侧太偏了
一般相机的默认position(0,1,-10)
==================================================================================================================

Object reference not set to an instance of an object

报错显示在这行: Ray ray1 = Camera.main.ScreenPointToRay(Input.mousePosition);
经检查 Input.mousePosition 不为null ,我并没有引用null 对象啊,很奇怪。
原因(引用了NULL对象):我之前把默认的MainCamera删掉了,自己添加了Camera,而这行代码是找主相机,所以没有找到
解决办法:把camera属性右侧Tag改为MainCamera
==================================================================================================================

"SetDestination" can only be called on an active agent that has been placed on a NavMesh.





原因:没有bake,或者bake的不对

解决方法:让对象自动寻找路径,使用Navigation烘焙地图中不可移动的对象
1.打开主菜单Windows->Navigation. 在Hierarchy中选上所有障碍物,在Navigation窗口,将Navigation
Static打上勾
Navigation Layer设置为not
walkable
注意:烘培时不要选择地形Terrain
2.Component->Navigation->NavMeshAgent给角色添加NavMeshAgent组件
3.在Navigation窗口中点击 Bake 烘培
4.修改Update.
NavMeshAgent nAgent=gameObject.GetComponent<NavMeshAgent>();
Debug.Log(nAgent);//观察是否获取到了对象

nAgent.SetDestination(hit.point);

注意:bake地图会很慢,如果不是必须,不要使用这种方式
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: