【问题标题】:Unity object will not return to original positionunity object 不会回到原来的位置
【发布时间】:2017-12-14 22:56:39
【问题描述】:

好的,所以我正在尝试统一制作 2D 平台游戏,我目前正在尝试让第一级的汽车在到达带有“返回”标签的障碍物后返回到原来的位置。以下是我一直在尝试使用的代码:

using UnityEngine;
using System.Collections;

public class Return : MonoBehaviour
{

Vector3 originalPos;

void Start()
{
    originalPos = new Vector3(75f, -.01f);

}
void OnTriggerEnter(Collider other)
{
    if (other.gameObject.tag == "Return")
    {
        gameObject.transform.position = originalPos;
    }

}
}    

代码没有做任何事情,汽车只是驶过我设置的障碍物。任何信息都会有所帮助,尽管我更喜欢 c#。请注意,我在这方面仍然大多是菜鸟,我从中学到很多的网站是:https://answers.unity.com/questions/1359710/i-want-to-reset-my-object-to-its-original-position.htmlhttps://docs.unity3d.com/ScriptReference/Vector3.html

【问题讨论】:

  • 汽车和障碍物都有碰撞器吗?如果您的 Return 脚本已附加到汽车,则汽车上的 Collider 必须将其 Is Trigger 属性设置为 true。

标签: c# unity5


【解决方案1】:

正如@Hristo 评论的那样,您需要确保汽车和障碍物都连接了碰撞器。当您使用 OnTriggerEnter 时,汽车碰撞器(在检查器中)也需要选中 isTrigger 框(设置为 true)。

我怀疑,由于您的游戏是 2D 的,您可能正在使用 2D 对撞机和物理(顺便说一句,您应该这样做)。如果是这种情况,您必须使用void OnTriggerEnter2D(Collider2D other) 访问 2D 碰撞器,并且汽车和障碍物都需要附加到其游戏对象的 2D 碰撞器(例如 Box Collider 2D)。汽车再次需要选中 isTrigger 框(设置为 true)。

另外,请确保您在汽车上安装了刚体(如果是 3D 物理,则为 Rigidbody,如果是 2D,则为 Rigidbody2D)。然后在检查器中将 Body Type 设置为 Kinematic。这使触发器能够与其他对撞机交互,并且由于它是运动学的,因此不受重力影响。

对于 2D 对撞机和物理,您的代码将更改为:

using UnityEngine;
using System.Collections;

public class Return : MonoBehaviour
{

Vector3 originalPos;

void Start()
{
    originalPos = new Vector3(75f, -.01f);

}
void OnTriggerEnter2D(Collider2D other)
{
    if (other.gameObject.tag == "Return")
    {
        transform.position = originalPos;
    }

}
}    

【讨论】:

  • 是的,两个物体都有碰撞器和障碍物,汽车的碰撞器有触发器。 Jakey 建议的代码没有帮助,这是检查员对汽车和障碍物的一些屏幕截图。车:gyazo.com/5868aca369f0a0c88356618a28dc6da3 屏障:gyazo.com/c45f2869374c9f653783bf3c05e68f8a
  • 啊,我看到了你的问题(我想)。您的“Barrior”对象也不能是触发器(取消选中 isTrigger on barrier)。那是因为 Car 中的触发器需要另一个碰撞器来触发事件。不是另一个触发器。此外,您需要将 Rigidbody2D 附加到汽车并将其车身类型设置为 Kinematic
  • Unity 不会让我同时放置刚体和多边形对撞机,抱歉,如果这是一个简单的修复,我又是一个完全的菜鸟。会发生什么:gyazo.com/c12a375c023ee0ce6b58b3452b345601
  • 您是选择 Rigidbody2D 还是只是普通的旧 Rigidbody?您需要为 2D 物理内容选择 Rigidbody2D
  • 忽略最后一条评论,我太愚蠢了,放了一个普通的刚体而不是二维的,抱歉。然而,现在屏障正在破坏酒吧而不是将其送回。
猜你喜欢
  • 2020-11-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多