在做一个地牢游戏时,我的玩家原型是一个魔法师一样的角色,他的攻击方向是由鼠标点击方向决定的。然而在这个问题上,我犯了很多错误,自己也很焦躁,到最后,才发现,其实只需要知道鼠标在屏幕上的点击位置(用Input.mouseposition来获取),再知道屏幕的宽高即可。大致如下:
void FixedUpdate()
{
//计时器,子弹发射有间隙
NextFire += Time.fixedDeltaTime;
//如果按下了鼠标左键且计时器大于发射间隙
if (Input.GetMouseButton(0) && NextFire > FireRate)
{
//记录鼠标位置
Vector3 direction = Input.mousePosition;
//计时器归零
NextFire = 0;
//生成子弹
GameObject b = Instantiate(Bullet, Spwan.transform.position, Quaternion.identity) as GameObject;
//子弹速度由鼠标点击的位置减去屏幕的宽高的1/2得到
//主要就是坐标的转换
b.GetComponent<Rigidbody2D>().velocity = (new Vector3(direction.x - Camera.main.pixelWidth / 2,direction.y - Camera.main.pixelHeight / 2, 0).normalized * BulletSpeed);
//将所有子弹放在一个父物体下,方便操作
b.transform.SetParent(GameObject.Find("Bullets").transform);
}