C# 统一5-物理。重叠球不工作
我正在制作我的第一个Unity游戏,这个脚本有问题C# 统一5-物理。重叠球不工作,c#,unity5,overlap,physics-engine,C#,Unity5,Overlap,Physics Engine,我正在制作我的第一个Unity游戏,这个脚本有问题 void FixedUpdate () { Debug.Log ("dead is " + dead); dead = Physics.OverlapSphere (frontCheck.position, radius, whatIsWall); if (dead == true) { Debug.Log ("Player died!"); Invoke ("Reset",
void FixedUpdate ()
{
Debug.Log ("dead is " + dead);
dead = Physics.OverlapSphere (frontCheck.position, radius, whatIsWall);
if (dead == true)
{
Debug.Log ("Player died!");
Invoke ("Reset", 1);
}
}
void Reset()
{
SceneManager.LoadScene ("Game");
}
当玩家撞到墙时,我试图在玩家前面使用变换使bool
dead
为真。我使用的是Physics2D.OverLapPoint,它运行得很好,但我不得不将播放器的物理特性更改为3D。我现在正在尝试使用Overlapphere,但收到一条错误消息“无法隐式转换typeUnityEngine.Collider[]
到bool
。我该怎么做才能使这项工作成功呢?我基本上是Unity和编码的初学者,所以这可能是一个简单的解决方案。也许我只需要尝试其他方法?谢谢。更好的方法
我认为检测碰撞的更好方法是使用OnCollisionCenter。
这样,您就可以进行简单的检查,例如:
void OnCollisionEnter(Collision col) {
if (col.gameObject.tag == "Wall"){
dead = true;
}
}
以下是一个简短的教程:
使用重叠球体
如果出于某种原因您更喜欢Overlapphere,那么您需要知道它不会像您期望的那样返回bool,而是返回所有与球体重叠的碰撞器
我相信你要找的是:
void FixedUpdate ()
{
Debug.Log ("dead is " + dead);
Collider[] hitColliders = = Physics.OverlapSphere (frontCheck.position, radius, whatIsWall);
if (hitColliders.length != 0) {
Debug.Log ("Player died!");
Invoke ("Reset", 1);
}
}
我该怎么做才能让它工作
我个人会使用不同的方法,然后重叠。最简单的解决方案之一是使用碰撞器和对象标记
回答为什么代码不起作用。这主要是因为变量“dead”不是bool,并且“UnityEngine.Collider[]”的值不能是“true”
这是Unity Prefact第一人称控制器的示例,该控制器已分配以下脚本。之后,所有具有任何碰撞器和标记集ro“红色”的对象都将对scrip作出反应。在这种情况下,它将写入“我已与触发器碰撞”+某物
using UnityEngine;
public class collisionTest : MonoBehaviour {
void OnTriggerEnter(Collider trigg)
{
if (trigg.gameObject.tag == "Red")
{
Debug.Log("I have collided with trigger" + trigg.gameObject.name);
//do your stuff
}
}
}
除非对象需要彼此通过,否则OnCollisionCenter不是通常更好吗?尽管屏幕截图做得很好,您已经完成了完整教程的一半;)因为Physics.OverlapSphere可以让您获得碰撞发生的精确点,以及它对爆炸之类的东西更有用的半径。问题是如何请检查玩家是否在任何时候撞到墙。所以我认为对撞机很好。谢谢喜欢屏幕:)