从相机中间拍摄球

时间:2014-05-03 10:03:40

标签: unity3d

我试图让第一个人角色从相机中间射出一个球, 但它只是不起作用。 这是第一个人物角色的剧本: 公共刚体球;

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);

}

球是预制的。问题是球不是来自相机的中心。 我不明白为什么它不起作用。 有人可以帮帮我吗? 谢谢!

2 个答案:

答案 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);
    }
}