Unity2D鼠标左键单击后如何使主摄像机在Y轴上连续向上移动?

时间:2019-03-09 17:31:33

标签: unity3d

仅在单击鼠标左键后,我试图使主摄像机在Y轴上缓慢移动。

到目前为止,这是我的代码。

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

public class CameraPanUp : MonoBehaviour
{
    public float speed = 5f;
    public Transform target;

    Vector3 offset;

// Start is called before the first frame update
void Start()
{
    offset = transform.position - target.position;
}


// Update is called once per frame
void FixedUpdate()
{
    Vector3 targetCamPos = target.position + offset;
    transform.position = Vector3.Lerp(transform.position, targetCamPos, speed * Time.deltaTime);

    if (Input.GetMouseButtonDown(0))
    {

    }
}

}

我不确定要在上面的if语句中添加什么。我尝试使用transform.Translate之前,每次我单击鼠标时,它只会使Camera以小增量向上移动。这是为什么?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

一种选择是使用协程:

Coroutine moveCoroutine;
IEnumerator StartMovingUp() {
  float moveSpeed = 2f;
  while(true) {
    transform.Translate(0, moveSpeed * Time.deltaTime, 0);
    yield return null;
  }
}
void Update() {
  if (Input.GetMouseButtonDown(0) && moveCoroutine == null) {
    moveCoroutine = StartCoroutine(StartMovingUp());
  }
}

另一个人在Update函数中使用状态字段进行操作。还有更多可能会使代码过于复杂。

bool isMovingUp;
float moveSpeed = 2f;
void Update() {
  if (Input.GetMouseButtonDown(0)) {
    isMovingUp = true;
  }
  if (isMovingUp) {
    transform.Translate(0, moveSpeed * Time.deltaTime, 0);
  }
}