这是我的立方体游戏代码。其实我希望这段代码运行如下: 当我按下“空间”时,它必须生成一个立方体,当前它生成多个立方体一次按下“空格”按钮。 其次,当我使用箭头键时,它必须从我当前站立的位置生成立方体,但暂时它只是从中心生成立方体。
using UnityEngine;
using System.Collections;
public class fire : MonoBehaviour {
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.name == "brick" || collision.gameObject.name == "a" || collision.gameObject.name == "b")
{
Destroy(collision.gameObject);
}
}
public float speed;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
transform.Translate(speed * Input.GetAxis("Horizontal") * Time.deltaTime, 0f, 0f);
if (Input.GetKey(KeyCode.Space))
{
transform.Translate(speed * Vector3.up * Time.deltaTime);
}
Vector3 temp = transform.position;
if (Input.GetKey(KeyCode.Space))
{
GameObject textObject = (GameObject)Instantiate(Resources.Load("ball"));
}
}
}
答案 0 :(得分:2)
尝试使用Bash Redirections或GetKeyDown而不是GetKey。
您可以使用要实例化对象的位置调用Input.GetKeyUp。
答案 1 :(得分:1)
如何使用Input.GetKeyUp ???
using UnityEngine;
using System.Collections;
public class ExampleClass : MonoBehaviour {
void Update() {
if (Input.GetKeyUp("space"))
print("space key was released");
}
}
答案 2 :(得分:0)
From http://docs.unity3d.com/ScriptReference/Input.GetKey.html“当用户按下由名称标识的密钥时返回true。想想自动启动。”因此,如果您按下键1/10秒并且每秒调用60次更新,您将获得大约六个立方体。
通常,您希望将对象创建绑定到keydown或keyup事件,因为它只会触发一次。
答案 3 :(得分:0)
您可能想使用Input.GetKeyDown(“ space”)实例化gameObject一次。这是因为它只会在您按下框架的期间返回。 而您仍然按下按钮时,您正在使用的Input.GetKey将返回true。 因此,您可以执行以下操作:
void Update()
{
if(Input.GetKeyDown("space")
{
GameObject textObject = (GameObject)Instantiate(Resources.Load("ball"));
}
}