半成品效果图:
1、开始阶段,场景搭建,资源导入
2、添加第一个脚本,创建我们要打击的墙体
public class CreatBox : MonoBehaviour {
void Start () {
for (int i = 0; i < x; i++) // 控制横排为X
{
for (int j = 0; j < y; j++) // 控制竖排为Y, 当横排为0时,垂直方块个数为8个
{
GameObject box = GameObject.CreatePrimitive(PrimitiveType.Cube);
box.transform.position = new Vector3(-4.0f + i, 0.5f + j, 4);
box.GetComponent<Renderer>().material.color = new Color(Random.Range(0f, 1f), Random.Range(0f, 1f), Random.Range(0f, 1f));
Rigidbody r = box.AddComponent<Rigidbody>();
//r.mass = 10;
box.tag = "Box";
}
}
}
}
3、实例化子弹
这里有两种方式一种,通过预制物,一种通过动态加载内置物
4、销毁子弹脚本
我们的子弹可能创建无数个,所以为了性能,要及时销毁。
5、子弹特效
6、画瞄准镜
private void OnGUI()
{
// 对于一张图片定位只需要在屏幕确定两个位置
/******************************
* | 距离顶部多少 *
*---------****** *
*---左边 --| 图 | *
*---多少 --| 片 | *
* ****** *
* *
*****************************
同时拿到图片的宽度和高度就能够显示了在我们的屏幕上了
注意:要确保鼠标在图片的中心点,即宽度与高度的一半
*/
float left = Input.mousePosition.x - pic.width / 2;
float top = Screen.height - Input.mousePosition.y - pic.height / 2;
GUI.DrawTexture(new Rect(left,top,pic.width,pic.height), pic);
}
7、力度控制
// 创建子弹(通过内置物,就是系统内置的基本3D类型)
GameObject bullet = GameObject.CreatePrimitive(PrimitiveType.Sphere);
//bullet.transform.position = this.transform.position;
bullet.transform.position = Camera.main.transform.position;
bullet.transform.localScale = new Vector3(0.2f, 0.2f, 0.2f);
// 给实例化出来的子弹添加脚本
bullet.AddComponent<bulletDestroy>();
// 给子弹添加特效
bullet.AddComponent<BulletEffic>();
// 发射子弹(要有冲击力,那就需要刚体组件)
Rigidbody r = bullet.AddComponent<Rigidbody>();
r.AddForce((hit.point - transform.position) * FourcePower, ForceMode.Impulse);
如何调整力度?