void Update () {
if (Input.GetButtonDown ("Fire1")) {
Instantiate(ball,transform.position+new Vector3(0,1,0),transform.rotation);
}
}
这是球的脚本:
public float speed=20;
Vector3 direction;
void Start () {
direction = Camera.main.transform.forward;
}
void Update () {
transform.Translate(direction *Time.deltaTime*speed);
Destroy(gameObject,3);
}
球是预制的。问题是球不是来自相机的中心。 我不明白为什么它不起作用。 有人可以帮帮我吗? 谢谢!
答案 0 :(得分:0)
你的脚本不起作用的原因是Instantiate函数中的错误位置,因为你不应该假设该玩家面向正Y轴方向。
实例化代码应如下所示:
Instantiate(ball,transform.position + transform.forward*(distance_from_camera),transform.rotation);
我们为玩家设置了位置transform.position由" forward"向量(表示对象面向的方向),将此值乘以实例化对象出现的距离。
编辑:1。在球脚本中,方向应该只是transform.forward。 2.实例化的球的前进方向应该等于相机的前进方向。要实现这一点,你必须将球设置为相机的子项,将localRotation更改为(0,0,0)。在它之后" unchild"球,所以它不会有父母。
答案 1 :(得分:0)
你太近了!你只需要在相机位置实例化它!
void Update () {
if (Input.GetButtonDown ("Fire1")) {
Instantiate(ball,Camera.main.transform.position,transform.rotation);
}
}