加电下降位置问题

时间:2019-05-12 11:01:35

标签: c# unity3d

从毁坏的砖块上掉下来的电源下降是从屏幕中间掉下来的,我正试图从毁坏的刺针位置掉下电源。

private void OnCollisionEnter(Collision collision)
{          
    if (collision.gameObject.tag == "ball")
    {
        hitPoint--;
        if (hitPoint <= 0)
        {

            Destroy(this.gameObject);
            Instantiate(explosion, transform.position, transform.rotation);

            //calculate a random value between 0 and 1
            //if randomvalue is smaller than percentage do the next line
            if (randNum < percentage)
            {
               Instantiate(heart,Vector3.down * fallSpeed * Time.deltaTime, transform.rotation);
            }

        }
    }
}

1 个答案:

答案 0 :(得分:0)

问题出在这一行:

Instantiate(heart,Vector3.down * fallSpeed * Time.deltaTime, transform.rotation);

它会在屏幕中间生成需要更改的对象:

Instantiate(heart, transform.position, transform.rotation);

请记住,OnCollisionEnter在碰撞检测中仅调用了一次,而且Instantiate方法也仅创建一个对象并获取该对象的位置和旋转。因此,您不能在此处设置对象的速度。 将另一个脚本附加到“心脏加电”并通过该脚本移动它。例如:

public class Heart : MonoBehaviour
{
    private void Update()
    {
        transform.position += Vector3.down * fallSpeed * Time.deltaTime
    }
}