您的位置:首页 > 编程语言 > PHP开发

tps(第三人称射击游戏) 4.角色射击

2017-11-19 22:39 274 查看
人物射击第一时间想到的方法是往前发射一条射线

LineRenderer line;
Ray r;
Ray bullet;
RaycastHit hit;

line = this.gameObject.AddComponent<LineRenderer>();
line.SetVertexCount(2);
line.material = new Material(Shader.Find("Particles/Additive"));
line.SetColors(Color.red, Color.red);
line.SetWidth(0.05f, 0.05f);


初始化LineRenderer;

if(Input.GetMouseButtonDown(0))
{
Shooting();
}


鼠标左键按下射击

void Shooting()
{
r.origin = mcamera.transform.position;
r.direction = mcamera.transform.forward;//设定r射线

if(Physics.Raycast(r, out hit, 1000f))
{
GameObject gameObj = hit.collider.gameObject;
if (gameObj.tag == "zombie")
{
gameObj.transform.position += this.transform.forward * shootback_dis;
gameObj.SendMessage("ApplyDamage",30);

}

}//通过tag判断是否为敌人 如果射中的是敌人,调用其伤害函数,并将其击退

bullet.origin = transform.position;
bullet.direction = hit.point - transform.position;//子弹的弹道为人物到射中的物体

line.enabled = true;

line.SetPosition(0, transform.position);
line.SetPosition(1, hit.point);  //绘制射线

sound.clip = weaponList[(int)weaponIndex.ak].sound_shoot;  //播放枪声
this.sound.Play();

Invoke("detroyline", 0.05f);//消除弹道
}


通过第一个射线r得到屏幕中心射线触碰的点,再绘制射线从人物到射中点。

但只是一个取巧的方法,而且如果r没有碰到物体就无法绘制射线。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: