先让我们康康效果演示:
1.先创建地面和墙
- 地面和墙分别为Plane和Cube类型。
- 将Cube设置为Prefabs(预制体),添加刚体组件
- 添加材质给地面
2.制作子弹
我们要让子弹在相机的位置创建并发射,所以要给Main Camera添加一些脚本组件。
(1)让相机移动
在Main Camera上添加一个脚本组件。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class move : MonoBehaviour {
//可以更方便的控制移动速度
public float speed = 3.0f;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
//得到水平方向上的移动
float h = Input.GetAxis("Horizontal");
//得到垂直方向上的移动
float v = Input.GetAxis("Vertical");
//进行移动
//Time.deltaTime时间间隔,每帧之间的间隔。例如一秒50帧,则它就代表1/50
//new Vector3(h, 0, v)*Time.deltaTime 表示每移动一个单位的距离耗时一帧
transform.Translate(new Vector3(h, v, 0)*Time.deltaTime*speed);
}
}
产生效果为:
(2)让相机产生子弹
在Main Camera上添加另一个脚本组件。
这样做的目的是,让功能区别开,方便管理和修改。
我们先创建一个小球,使其成为预制体后,将它删除。
给预制体添加一个刚体组件。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class shot : MonoBehaviour {
public float speed = 30.0f;
public GameObject bullents;
private Rigidbody rd;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
//如果点击鼠标左键
if (Input.GetMouseButtonDown(0))
{
//就创建子弹
GameObject bullent = GameObject.Instantiate(bullents, transform.position, transform.rotation);
//得到小球的刚体信息
rd= bullent.GetComponent<Rigidbody>();
//给小球一个射击速度
rd.velocity = transform.forward * speed;
}
}
}
效果演示:
好吧,这样球看起来有点太暴躁,所以我多加了一个触发检测。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class WallDestory : MonoBehaviour {
// Use this for initialization
void Start()
{
}
// Update is called once per frame
void Update()
{
}
void OnCollisionEnter(Collision collision)
{
if(collision.collider.tag=="duang")
{
Destroy(collision.collider.gameObject);
}
}
void OnTriggerEnter(Collider collider)
{
if (collider.tag == "duang")
{
Destroy(collider.gameObject);
}
}
}
这样就和谐多了。