【问题标题】:Unity 3D colision of objectsUnity 3D物体的碰撞
【发布时间】:2017-07-18 03:17:18
【问题描述】:

我有一个 3D 游戏,当您点击播放时会随机生成。问题是对象不会通过碰撞生成,并且角色开始穿过墙壁。在 C# 中生成碰撞对象的必要代码是什么?

【问题讨论】:

  • 1. UnityScript 是与 C# 2 不同的语言。"objects don't generate colision" 是什么意思?他们有分配给他们的碰撞器和/或刚体吗?
  • 您需要对象上的碰撞器组件才能使碰撞起作用。其中一个对象还需要一个刚体。如果您需要更多帮助,请显示您的代码和更多上下文。
  • 大约 2 小时后我会回家并发布代码。感谢您的回复,并对 rong 标签感到抱歉,我是新手

标签: c# unity3d unityscript


【解决方案1】:

好的,如果我正确阅读了您的问题,您正在为您的游戏自动生成随机网格,但它们上还没有碰撞器。要在 c# 中为对象生成碰撞器,请参见以下示例:

using UnityEngine;
using System.Collections;

public class AddComponentExample : MonoBehaviour
{
   void Start( )
   {
      SphereCollider sc = gameObject.AddComponent<SphereCollider> as SphereCollider;
   }
}

您需要为您正在生成的游戏对象添加一个碰撞器组件。您选择的那个取决于您创建的网格,因此如果您要生成立方体网格,请选择一个盒子对撞机。

如果您要创建自己的网格而不是更复杂的图元,则可以应用“MeshCollider”。但请注意,如果您在运行时创建自己的网格,您可能会得到一些不寻常的伪像。

希望有帮助

【讨论】:

  • 最好使用通用语法,如果类型拼写错误,编译时会出错,而字符串语法不会。 SphereCollider sc = gameObject.AddComponent&lt;SphereCollider&gt;( ) as SphereCollider;
  • 先生,您是绝对正确的,事实上,字符串格式现在在 Unity 5 中已被弃用,我将调整我的答案:)
  • 谢谢大家。我知道这个问题很愚蠢,我忘了发布一些代码,因为我对这一切都不熟悉。你们都帮了一点忙。如果它有效,我会在应用您的代码时通知您
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-29
  • 2017-05-09
  • 2021-12-05
相关资源
最近更新 更多