【问题标题】:Unity2D | If click go up on y-axis, else pingpong movement on a x-axis?Unity2D |如果单击在 y 轴上向上,则在 x 轴上进行乒乓运动?
【发布时间】:2019-12-30 16:13:11
【问题描述】:

我有一个工作脚本:当我单击播放器开始上升时,当我释放时,播放器开始进行乒乓球运动。问题是当我释放鼠标按钮时,玩家位置每次都在 x 轴上变化。它看起来像乒乓球运动,从未停止过。当它停止上升时,回到它应该在的地方。我希望它可以理解。

这是我的脚本:

void Update() 
{
    if (Input.GetMouseButton(0))
    {
        float translation = 6f;
        translation *= Time.deltaTime;
        transform.Translate(0, translation, 0);
    } 
    else
    {
        float min = -2.3f;
        float max = +2.3f;
        transform.position = new Vector3(Mathf.PingPong(Time.time * 6, max - min) + min, transform.position.y, transform.position.z);
    }
}

【问题讨论】:

    标签: c# unity3d transform translate


    【解决方案1】:

    对不起,但我认为我没有正确理解您。 但我注意到两件事可能很麻烦。 第一的) 在您的if 语句中,您输入了Input.GetMouseButton(0),当按下鼠标按钮时这将是真的。这会使您的else 在未按下按钮时触发。 您在帖子中提到您希望在释放按钮时乒乓球移动,并且“释放时”与“未按下”不同。 也许您希望您的 else 声明在按钮释放时触发,而不是在按钮未按下时触发。因为,在当前形式下,只要您不再按下鼠标按钮,乒乓球运动就会处于活动状态。

    无论如何 第二件事。 不确定您希望乒乓运动发生在哪个轴上。 因为,根据文档, 这行代码 transform.position = new Vector3(Mathf.PingPong(Time.time * 6, max - min) + min, transform.position.y, transform.position.z);

    将在 X 轴上进行乒乓运动。

    Link 到文档中。您需要更改这条线以使乒乓球在其他轴上移动。

    【讨论】:

    • 另外,如果它不能解决您的问题。尝试从transform.position = new Vector3(Mathf.PingPong(Time.time * 6, max - min) + min, transform.position.y, transform.position.z); 的这一部分中删除max - min) + min,因为某些我无法澄清的原因,这对我来说看起来很可疑;p
    • 感谢您的回答。我解决了。我的问题是这条线,我用 transform.translate 替换它: transform.position = new Vector3(Mathf.PingPong(Time.time * 6, max - min) + min, transform.position.y, transform.position. z);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多