产生炸弹并将它们扔给Unity中的玩家

时间:2017-09-15 21:57:29

标签: c# unity3d

我有一个小舞台,玩家可以继续前进。在该地区的两侧有产卵者。这些产卵者实例化炸弹,并将它们扔给玩家。

对于我实际使用的方向

transform.lookAt(playerTransform);

所以这是一张粗略的地图

Map

所以产卵者在地图上旋转。他们从一个点移动到下一个点。

我的炸弹对象附着了刚体并且重力被激活。我只需要找出如何让一个产生者向玩家投掷炸弹。

public class BombSpawner : MonoBehaviour
{
    [Range(0, 3)]
    [SerializeField]
    private int nextPointIndex; // set the first targetpoint

    private Vector3[] targetPoints = {
        new Vector3(-15,0,15),
        new Vector3(15,0,15),
        new Vector3(15,0,-15),
        new Vector3(-15,0,-15)};

    private float movementSpeed = 10;

    GameObject bombPrefab;

    Transform player;

    private void Start()
    {
        bombPrefab = Resources.Load(StringCollection.BOMB) as GameObject;
        player = Globals.GetPlayerObject().transform;
    }

    private void Update()
    {
        transform.LookAt(player); // set the object rotation

        Vector3 nextPoint = targetPoints[nextPointIndex]; // get the target point
        transform.position = Vector3.MoveTowards(transform.position, nextPoint, movementSpeed * Time.deltaTime); // move the spawner
        if (transform.position == nextPoint) // point reached? set a new point 
        {
            if (nextPointIndex < targetPoints.Length - 1)
                nextPointIndex++;
            else
                nextPointIndex = 0;
        }
    }
}

所以我可以写一个像这样的方法

void SpawnBomb()
{
GameObject spawnedBomb = Instantiate(bombPrefab);
}

但我如何实现投掷机制呢?首次尝试时,targetPoint为player.position应该没问题。

1 个答案:

答案 0 :(得分:3)

你需要获得从产卵者到目标位置的方向,产生炸弹并使用你刚刚获得的方向为炸弹增加力量。

为了做到这一点,你应该从你的目标位置减去你的产卵者的位置。

Vector3 dir = target.transform.position - transform.position;

既然你有方向可以产生你的炸弹并且AddForce()就可以了。要添加力,您需要调用生成的炸弹的Rigidbody组件,如下所示:

spawnedBomb.GetComponent<Rigidbody>().AddForce(dir.normalized * force, ForceMode.Impulse);

dir是指向目标的方向(标准化 - 因此距离无关紧要),force几乎就是炸弹的速度。

您可以在此处详细了解Rigidbody.AddForce