我不知道为什么Insantiation不起作用。我正试着用空格键来做。或者它可能是关于轴的东西?
public GameObject projectile;
public Transform padre, hijo;
public Rigidbody r;
private float value;
void Start () {
padre = transform.parent;
hijo = transform.GetChild (0);
value = 0;
}
void Update () {
float j = Input.GetAxis ("Jump");
if (j == 1 && value == 0) {
Instantiate (projectile, hijo.position, hijo.transform.rotation);
}
float h = Input.GetAxis ("Horizontal2");
r.transform.Translate (h * Time.deltaTime, 0, 0);
float v = Input.GetAxis ("Vertical2");
padre.Rotate (0, 0, -v * Time.deltaTime * 20);
value = j;
}
答案 0 :(得分:2)
比较浮动永远不是一个好主意。
在此语句变为true之前,j
变量必须等于1
且value
变量必须为0
。 Input.GetAxis
会返回0
和1
之间的值。
如果你想要做的就是在按下Space键时实例化GameObject,他们只需使用Input.GetKeyDown
代替Input.GetAxis
if (Input.GetKeyDown(KeyCode.Space))
{
Instantiate(projectile, hijo.position, hijo.transform.rotation);
}
答案 1 :(得分:0)
你正在检查j是否完全等于1.但是,getAxis返回一个接近但不完全等于1的浮点数。而是检查j何时接近1。
例如(伪代码):
float j = Input.GetAxis ("Jump");
float ep=.1f;
if (Math.abs(j-1)<ep && value == 0) {
//Instantiate
此外,您应确保value
实际上等于0(您可能还有一些其他代码修改它,除了显示的内容)