【问题标题】:How can I switch toggle Input.GetKeyDown in unity?如何统一切换切换 Input.GetKeyDown?
【发布时间】:2017-12-22 13:05:05
【问题描述】:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DroidMove : MonoBehaviour
{
    public GameObject droid;

    private void Start()
    {
        droid.SetActive(false);
    }

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.D))
        {
            droid.transform.position = droid.transform.position - transform.forward;
            droid.SetActive(true);
        }
    }
}

我希望一旦我点击 D,它就会显示 Droid,而且当我移动相机(变换)时,机器人会跟随相机。

当我再次单击 D 时,将 droid active 设置为 false,因此每次单击 D 时,它都会在 SetActive false 和 true 之间切换。

【问题讨论】:

  • droid.SetActive(!droid.active);

标签: c# unity3d unity5


【解决方案1】:

要切换对象,您应该使用类似这样的东西。伪

if (Input.GetKeyDown(KeyCode.D))
        {

            droid.enabled = !droid.enabled;
        }

这将允许您在每次按下按钮 D 时切换游戏对象。

在按键中

droid.transform.position = droid.transform.position - transform.forward;

这只会工作一次(一帧)。因此,您可以使用 bool 或检查您的游戏对象是否处于活动状态以跟随您的相机。在更新中,您可以使用以下内容

if (droid.activeInHierarchy == true) // or you can use a bool here
        {
            droid.transform.position = droid.transform.position - transform.forward;

        }

希望这会有所帮助。干杯!

【讨论】:

  • 当我在做 droid.transform.position = droid.transform.position - transform.forward;然后每次当 droid 再次设置为 true 时按 D 多次,droid 离玩家越来越近。我想保持原来的距离。并且机器人没有跟随相机移动。我忘了提到变换是 FirstPersonCharacter,当我在连接到 FirstPersonCharacter 的相机周围移动时,我希望机器人跟随相机移动。
  • 您似乎只是在与您的 FirstPersonCharacter 方向相反的方向移动机器人 (transform.forward)。要将其移动到相机位置,您需要沿着 Vector 从 droid 移动到相机(droid.transform.position - transform.position)。顺便看看 Unity 的Navigation,它可能会覆盖您的已经需要了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多