敌人观看球员和射门,但子弹不会投射

时间:2016-01-10 22:59:54

标签: c# unity3d

这是一个2D自上而下的游戏,这个脚本使一个物体在一个点上不断旋转,始终面向玩家,并不断向该方向产生子弹。

唯一的问题是,当然,我被困在制作子弹项目的最后细节时。子弹产卵但他们只是坐在那里。

如果玩家在物体周围绕圈运行,它会在自身周围产生一个完美的子弹圈,只是坐在那里。我评论了我的其他一些尝试,通过搜索来解决这个问题,这些尝试无法显示已经尝试过的一些内容。非常感谢提前!

using UnityEngine;
using System.Collections;

public class sightPlayer : MonoBehaviour {

public GameObject Player;
public GameObject watcherShot;
public Transform watcherShotPoint;
public Rigidbody2D wShotRig;
public float wShotforceRate = 500 ;

public void Start()
{
wShotRig = GetComponent<Rigidbody2D>() ;
}

void Update () {
Vector3 dir = Player.transform.position – transform.position;
float angle = Mathf.Atan2(dir.y,dir.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.AngleAxis(angle, Vector3.forward);
StartCoroutine(“WShootEvent”);
}

public IEnumerator WShootEvent()
{
yield return new WaitForSeconds(2f);
GameObject wShot = (GameObject)Instantiate(watcherShot, watcherShotPoint.transform.position, Quaternion.identity);
//    wShotRig.AddForce(wShotforceRate*Vector2.MoveTowards,Vector2.*Time.deltaTime) ;
wShotRig.AddForce(transform.TransformDirection * 50000) ;
//    wShotRig.AddForce(transform.TransformDirection * 50000) ;
//wShotRig.rigidbody.AddForce(swipeDirection * 5);
yield return new WaitForSeconds(2f);
}
}

1 个答案:

答案 0 :(得分:1)

在确保您的watcherShot预制件正确初始化并设置后,您可以试试这个,我假设您想要向实体前进方向拍摄:

public IEnumerator WShootEvent()
{
    // code omitted...

    // projecting the transform forward vector on the 2D xy plane.
    Vector2 fdirection = new Vector2(transform.forward.x, transform.forward.y);
    wShotRig.AddForce(fdirection.normalized * wShotforceRate);
}

你的子弹预制件需要一个2DRigidbody,它不能运动,能够对它施加力,质量低,阻力小,所以它应该正确移动。