【问题标题】:Unity3D move a sprite when pressing a keyUnity3D在按键时移动精灵
【发布时间】:2014-04-06 15:58:38
【问题描述】:

当我按下w 键时,我正试图移动一个精灵。我一直在使用我在 YouTube 上找到的教程,但我似乎无法让它发挥作用。这是代码。也许我在转换时遇到问题;我可以看到 x 位置增加,但精灵没有做任何事情。

#pragma strict

var startPoint : Vector3;
var endPoint : Vector3;
var speed : float;
private var increment : float;
var isMoving : boolean;

function Start ()
{
    startPoint = transform.position;
    endPoint = transform.position;
}

function Update ()
{
    if (increment <= 1 && isMoving == true) {
        increment += speed/100;
        Debug.Log("Moving");

    }
    else {
        isMoving = false;
        Debug.Log("Stopped");

    }

    if (isMoving == true)
        transform.position = Vector3.Lerp(startPoint, endPoint, increment);

    if (Input.GetKey("w") && isMoving == false) {
        increment = 0;
        isMoving = true;
        startPoint = transform.position;
        endPoint = new Vector3(transform.position.x, transform.position.y, transform.position.z + 1);

    }
    if (Input.GetKey("s") && isMoving == false) {
        increment = 0;
        isMoving = true;
        startPoint = transform.position;
        endPoint = new Vector3(transform.position.x, transform.position.y, transform.position.z - 1);
    }
}

【问题讨论】:

  • 您确定要让您的精灵在 z 轴上移动吗?
  • 是的,当我在“变换”面板中手动在 Z 轴上写入一个数字时,精灵确实会按照预期的方式移动。
  • 我认为你的脚本有点复杂,只是移动你的精灵。有什么特别的方式你想让你的弹簧移动,或者它基本上是一个简单的移动?
  • 我对任何想法持开放态度,我只是在学习一个教程。有任何想法吗?我只想将我的角色(目前)向上移动一个位置

标签: unity3d sprite game-physics


【解决方案1】:

试试这样的:

function Update () {

    if (Input.GetKeyDown(KeyCode.W)) {
        increment += speed / 100;
        transform.position = Vector3.Lerp(transform.position, transform.position + Vector3.forward, increment);
    }

    if (Input.GetKeyDown(KeyCode.Z)) {
        increment += speed / 100;
        transform.position = Vector3.Lerp(transform.position, transform.position + Vector3.back, increment);
    }
}

另外,检查检查器中的速度是否不为 0。如果您想连续移动,请将 Input.GetKeyDown 更改为 Input.GetKey。

【讨论】:

  • 很抱歉在 Unity 中这么新,但是检查器是什么以及如何检查它?也许这就是问题所在。我相信输入很好,因为我可以改变 Z 的值,但在视觉上它保持在相同的位置。
  • 这是检查员:docs.unity3d.com/Documentation/Manual/Inspector.html。单击已附加脚本的对象,您将在检查器上看到其属性。
  • 啊,是的,当我按下 w 时,inspector 改变了 Z 位置 + 1,但我没有看到精灵在移动
  • 你能在检查器上看到你的脚本吗?
  • 就是速度!非常感谢!它被设置为零!谢谢sss
猜你喜欢
  • 2021-06-15
  • 2022-05-29
  • 2021-11-30
相关资源
最近更新 更多