【问题标题】:Object to walk forward, turn 180 and walk back反对向前走,转弯 180 并向后走
【发布时间】:2018-02-27 18:11:05
【问题描述】:

我有一个向前走的物体,当它到达某个 x 位置时,它应该停止,转 180 度然后往回走,然后当它到达开始的位置时,它会转 180 度并再次向前走。

这就是我试图让他走路和转身的方式:

public float Speed = 1f;
public float TurnSpeed = 1f;

void Start () {
    transform.position = new Vector3(-10, 0, -79);
}

void Update () {
    transform.Translate(new Vector3(0, 0, 1) * Speed * Time.deltaTime);
    if (transform.position.x < -1)
    {
        transform.Translate(new Vector3(0, 0, 0));
        transform.Rotate(0, 180 * Time.deltaTime, 0);
    }
}

他会继续前进,不会停下来不知道为什么会有帮助?

【问题讨论】:

  • 您的程序中是否存在可能导致此问题的循环?
  • 我不确定,它应该向前移动,当 x 位置达到 -1 时它应该停止并转动,顺便说一句,我对统一很陌生
  • 为什么不在地图上设置航路点,以便警卫巡逻?我假设你想要的。你所有的守卫都可以有一系列的航路点,并从一个到另一个(触发对撞机),带有寻路和 AddForce(比将家伙从一个地方“传送”到另一个更健康,例如移动位置)。然后,你只需要 transform.LookAt [waypoint gameobject] 就可以了。如果您想保留向量,为什么不选择 Vector3.MoveTowards 而不是您现在尝试做的丑陋的事情?顺便说一句,到目前为止您尝试了什么?
  • 例如您是否尝试过 Debug.Log(transform.position);看看到底发生了什么? (我假设你没有。现在就去做,tadaa,你会看到你的东西哪里出了问题)
  • 干杯伙伴你猜错了,他只是一个来回走动的过路人,你能建议和回答

标签: c# unity3d


【解决方案1】:

我是新的内容,但每次你更新 - 你的第一行说:

向前移动一个

你需要在达到转折点后扭转这一点,可能是这样的:

void Update () {
    static boolean direction;
    if (direction)
        transform.Translate(new Vector3(0, 0, 1) * Speed * Time.deltaTime);
    else
        transform.Translate(new Vector3(0, 0, -1) * Speed * Time.deltaTime);

    if (transform.position.x < -1) //or whenever you want to turn
        direction = !direction;
}

别忘了旋转或者你只是向后走;)

【讨论】:

  • @RexDough 在此处插入您的坐标或其他内容 - 不确定您何时想跑回去。你用过:if (transform.position.x &lt; -1)
  • 嗨@RexDough,你需要勾选这个答案,因为它是正确和慷慨的。
猜你喜欢
  • 2023-01-21
  • 2013-01-22
  • 1970-01-01
  • 2014-01-02
  • 2015-10-24
  • 1970-01-01
  • 1970-01-01
  • 2016-05-11
  • 1970-01-01
相关资源
最近更新 更多