【问题标题】:How can i move a cylinder right and left?如何左右移动气缸?
【发布时间】:2016-11-02 22:50:41
【问题描述】:

在两点之间或仅在左侧不间断或仅在右侧不间断。

在这段代码中,我旋转了圆柱体,但我不能将它移到两侧:

using UnityEngine;
using System.Collections;

public class MakeTwoPoints3D : MonoBehaviour
{
    public float speed = 10f;

    public float delta = 15.5f;  // Amount to move left and right from the start point
    public float moveSpeed = 5.0f;
    private Vector3 startPos;

    void Start()
    {
        startPos = transform.position;
    }

    void Update()
    {
        transform.Rotate(Vector3.up, speed * Time.deltaTime);
        transform.position += transform.right * Time.deltaTime * moveSpeed;
    }
}

如果我进行transform.right,它会在圆周上上下移动圆柱体。如果我制作transform.up,它将向我移动它,我的意思是向前但向相机移动,但至少它会移动它。如果我再次进行transform.Forward,它将绕圈并将圆柱体向上移除。

我不知道怎么把它移到两边。

【问题讨论】:

  • transform.right 有什么价值?

标签: c# unity3d


【解决方案1】:

您需要使用Vector3.right 而不是transform.right

void Update()
{
    transform.Rotate(Vector3.up, speed * Time.deltaTime);
    transform.position += Vector3.right * Time.deltaTime * moveSpeed;
}

当您使用transform.right 时,Vector3 将采用该对象变换的局部旋转。意思是,如果对象绕 Y 轴旋转 45 度,您的 transform.right 向量将是一个角度。如果您在旋转对象的同时继续沿其局部轴平移对象,它将绕一圈。

另一方面,Vector3.right 总是在世界空间中,所以它总是面对“真实”的权利。

【讨论】:

  • 我尝试了您的解决方案,气缸没有向右或向左移动,它向左移动了一点,但对我来说也向相机移动。我的意思是这就像一起向左和向后移动。我录制了一段很短的视频片段来展示它:youtube.com/watch?v=7pFY8rDK7Rg&feature=youtu.be
  • 那是因为你的相机是旋转的。 transform.rightvector3.right 都不会将对象相对于相机向右平移。
猜你喜欢
  • 2013-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-05
  • 2022-01-18
  • 1970-01-01
相关资源
最近更新 更多