这是一个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);
}
}
答案 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,它不能运动,能够对它施加力,质量低,阻力小,所以它应该正确移动。