【碰撞工作在PC模拟器上但不在Android设备上】青春须早为,岂能长少年。这篇文章主要讲述碰撞工作在PC模拟器上但不在Android设备上相关的知识,希望能为你提供帮助。
我有两个带碰撞器的物体。球体对象(“球”)应与网格物体(“球门”)发生碰撞:
- 球体对撞机
- 网格对撞机
我使用下一个代码:
function OnCollisionEnter(theCollision : Collision){
if(theCollision.gameObject.name == "goal" )
{
(tm.GetComponent(TextMesh) as TextMesh).text="enter1";
forceAmount.z=-1000;
rb.AddForce(forceAmount);
}
}
代码在统一模拟器中工作得很完美但是当我将它构建到apk文件并安装在我的android平板电脑上时它不起作用。
谁能帮我这个?
答案Unity这样做的方法是将游戏对象设置为
Tag
。标签的使用很轻,您可以从编辑器设置标签,然后使用:if (theCollision.gameObject.tag == "goal")
另一答案我遇到了类似的问题 - 在编辑器中检测到碰撞但在Android中没有检测到。我通过将半径从0.5调整到20来解决它。
另一答案我遇到了同样的问题,似乎Unity将标签部署到Android设备有一些问题。
在我的场景中,我有一个RigidBody和一个PreFab(设置为触发器)。在我的代码中,我设置OnTriggerEnter来检查触发项目的标记,如果它与我的PreFab标记相同,我会隐藏触发的项目。
这段代码在我的编辑器中运行得很好,但是当我将这个解决方案部署到Android设备时,它没有用。
在测试和修改了几件事之后,解决问题的方法是为我的PreFab使用一个预定义的标签(而不是我使用“PickUpItem”的自定义标签)。
在我看来,在向Android设备发送自定义标签的统一5中存在问题,但对于预设标签,它可以正常工作。
另一答案我刚刚在2019年遇到了这个问题。在阅读了一些评论之后,似乎仍然存在向Android部署标签的错误。我在用
if(col.gameObject.tag == "tagName")
但是我改变它来检查
gameObject.name
并且它有效。另一答案同样的问题在2019年,由我删除一些未使用的标签后引起的。这只是重启Unity的问题。
推荐阅读
- Android下载管理器未从https下载文件
- 外部编辑器支持Google Apps脚本
- 将Android视图转换为A4大小的PDF
- 将Ionic应用程序部署到Android模拟器(Ionic 4)时出错
- 错误消息(android.content.res.Resources $ NotFoundException)
- Android(如何使用声音资源包含通知声音())
- android - 从库中获取资源ID
- Android资源转换为字符串TypedValue警告
- Hmac在Google Apps脚本中登录,当Secret和Digest是base64编码时