【问题标题】:How to reset z position to 0 when it reaches an end?到达终点时如何将z位置重置为0?
【发布时间】:2023-03-28 18:58:01
【问题描述】:

我让我的对象向一个方向移动,并在它到达位置 10 时将 z 位置重置为 0。但是当它到达 10 时位置 z 并没有返回到 0。

    using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;



public class NewBehaviourScript : MonoBehaviour
{
    float z = 1.0F;
   void Update()
    {
        
        if (z < 10.0f)
        {
            //move object forward
            transform.Translate(0,0,z * Time.deltaTime * 0.5F);
        }
        else
        {
            z = 0;
        }
    }
}

【问题讨论】:

  • z == 0 是返回 truefalse 的比较。单独,它是无效的代码。也许你想要一个任务(即z = 0)?

标签: c# unity3d


【解决方案1】:

问题在于.Translate 方法将对象移动了一个特定的向量。它没有分配固定位置。

如果要重置变换的z 位置,请为.position 属性分配一个新向量,其中包含原始xy 值以及0 作为最后一个参数。

这是您的代码的修正版本:

using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
    private const float Speed = 1.0f;

    private void Update()
    {
        if (transform.position.z < 10.0f)
        {
            // Moving object forward
            transform.Translate(0, 0, Speed * Time.deltaTime);
        }
        else
        {
            transform.position = new Vector3(
                transform.position.x,
                transform.position.y,
                0f);
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 2022-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多