捕鱼达人(炮筒跟着鼠标旋转,委托事件的运用)
2017-04-25 10:47
281 查看
Resources文件夹里的资源是不能打包的
//挂在鱼身上
public class FishMoveScript : MonoBehaviour {
public float speed;
private Vector3 starPosition;//开始位置
private Vector3 targetPosition;//目标位置
void Start () {
starPosition = transform.position;
GetTarget ();
if (transform.position.x > 0) {
ChangeDiretion ();//在右边产生先旋转
}
}
void Update () {
if (Vector3.Distance (transform.position, targetPosition) <= 0.05f) {
ChangeDiretion ();
starPosition = targetPosition;
GetTarget ();
}
MoveToTarget ();
}
void MoveToTarget(){//移动到目标位置
transform.position =Vector3.MoveTowards (transform.position ,targetPosition ,speed*Time.deltaTime );//向前直线移动(当前位置,目标点,最大移动距离)
}
//获取目标点
void GetTarget(){
targetPosition = new Vector3 (starPosition.x * -1, starPosition.y, 0);
}
//掉头
void ChangeDiretion(){
// transform.Rotate (new Vector3 (0, 180, 0));//旋转
Vector3 scale=transform.localScale ;
scale.x =-scale.x;
transform.localScale = scale;//改x
}
}
//鱼身上
public class FishLiveScript : MonoBehaviour {
public delegate void FishDelegate();//委托
public event FishDelegate fishEvent;//事件
public int Hp;//鱼的生命值
public GameObject explosionPer;
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnTriggerEnter2D(Collider2D other){//触发
if (other.tag == "Bullet") {
Hp -= other.gameObject.GetComponent <BulletScript > ().attack;
Destroy (other.gameObject);
if (Hp <= 0) {
//产生爆炸效果
Instantiate (explosionPer,transform.position ,Quaternion.identity );
fishEvent ();
Destroy (gameObject);
}
}
}
}
//挂在子弹身上
public class BulletScript : MonoBehaviour {
public int attack;
private Rigidbody2D rigid2D;
void Start(){
rigid2D = GetComponent <Rigidbody2D > ();
}
void Update () {
rigid2D.AddForce (transform.up * 10,ForceMode2D.Impulse );//自己的正上方加力
}
}
//挂在炮筒上
public class Cannon_1Script : MonoBehaviour {
public GameObject BulletPerfabs;//子弹预设体
public Transform shootPoint;//获取子弹产生的位置
void Start () {
}
void Update () {
FollowMouseRotation ();
if (Input.GetMouseButtonDown (0)) {
Shoot ();
}
}
void Shoot(){
Instantiate (BulletPerfabs ,shootPoint.position ,transform.rotation );//和炮筒一起旋转
}
void FollowMouseRotation(){
Vector3 mousePosition = Camera.main.ScreenToWorldPoint (Input.mousePosition);//得到鼠标坐标
Vector3 direction = mousePosition - transform.position;//得到方向
direction.z=0;
//限制旋转角度
if (direction.y >= 0.5f) {
//让自身坐标的Y轴指向当前方向
transform.up = direction;
}
}
}
public class GameController : MonoBehaviour {
private string[] fishName;
private float time;
private int killNumber;
void Start () {
fishName = new string[] { "Fish1", "Fish2", "Fish3" };//初始化
}
void Update () {
time += Time.deltaTime;
if (time >= 0.5f) {
CreatFish ();
time = 0;
}
}
void CreatFish(){
int fishIndex = Random.Range (0, 3);
//从资源文件夹中获得预设体
GameObject fishPerfabs=Resources .Load (fishName [fishIndex]) as GameObject ;
int x_Dic = Random.Range (0, 2);
float y = Random.Range (-2f, 3.5f);
Vector3 fishCreatPosition;
if (x_Dic ==0) {
fishCreatPosition = new Vector3 (-11.5f, y, 0);
} else {
fishCreatPosition = new Vector3 (11.5f, y, 0);
}
GameObject fish = Instantiate (fishPerfabs, fishCreatPosition, Quaternion.identity) as GameObject ;//预设体创建
}
void ShowData(){//显示杀死鱼的数据
killNumber++;
print ("当前得分为"+killNumber);
}
}
//挂在鱼身上
public class FishMoveScript : MonoBehaviour {
public float speed;
private Vector3 starPosition;//开始位置
private Vector3 targetPosition;//目标位置
void Start () {
starPosition = transform.position;
GetTarget ();
if (transform.position.x > 0) {
ChangeDiretion ();//在右边产生先旋转
}
}
void Update () {
if (Vector3.Distance (transform.position, targetPosition) <= 0.05f) {
ChangeDiretion ();
starPosition = targetPosition;
GetTarget ();
}
MoveToTarget ();
}
void MoveToTarget(){//移动到目标位置
transform.position =Vector3.MoveTowards (transform.position ,targetPosition ,speed*Time.deltaTime );//向前直线移动(当前位置,目标点,最大移动距离)
}
//获取目标点
void GetTarget(){
targetPosition = new Vector3 (starPosition.x * -1, starPosition.y, 0);
}
//掉头
void ChangeDiretion(){
// transform.Rotate (new Vector3 (0, 180, 0));//旋转
Vector3 scale=transform.localScale ;
scale.x =-scale.x;
transform.localScale = scale;//改x
}
}
//鱼身上
public class FishLiveScript : MonoBehaviour {
public delegate void FishDelegate();//委托
public event FishDelegate fishEvent;//事件
public int Hp;//鱼的生命值
public GameObject explosionPer;
void Start () {
}
// Update is called once per frame
void Update () {
}
void OnTriggerEnter2D(Collider2D other){//触发
if (other.tag == "Bullet") {
Hp -= other.gameObject.GetComponent <BulletScript > ().attack;
Destroy (other.gameObject);
if (Hp <= 0) {
//产生爆炸效果
Instantiate (explosionPer,transform.position ,Quaternion.identity );
fishEvent ();
Destroy (gameObject);
}
}
}
}
//挂在子弹身上
public class BulletScript : MonoBehaviour {
public int attack;
private Rigidbody2D rigid2D;
void Start(){
rigid2D = GetComponent <Rigidbody2D > ();
}
void Update () {
rigid2D.AddForce (transform.up * 10,ForceMode2D.Impulse );//自己的正上方加力
}
}
//挂在炮筒上
public class Cannon_1Script : MonoBehaviour {
public GameObject BulletPerfabs;//子弹预设体
public Transform shootPoint;//获取子弹产生的位置
void Start () {
}
void Update () {
FollowMouseRotation ();
if (Input.GetMouseButtonDown (0)) {
Shoot ();
}
}
void Shoot(){
Instantiate (BulletPerfabs ,shootPoint.position ,transform.rotation );//和炮筒一起旋转
}
void FollowMouseRotation(){
Vector3 mousePosition = Camera.main.ScreenToWorldPoint (Input.mousePosition);//得到鼠标坐标
Vector3 direction = mousePosition - transform.position;//得到方向
direction.z=0;
//限制旋转角度
if (direction.y >= 0.5f) {
//让自身坐标的Y轴指向当前方向
transform.up = direction;
}
}
}
public class GameController : MonoBehaviour {
private string[] fishName;
private float time;
private int killNumber;
void Start () {
fishName = new string[] { "Fish1", "Fish2", "Fish3" };//初始化
}
void Update () {
time += Time.deltaTime;
if (time >= 0.5f) {
CreatFish ();
time = 0;
}
}
void CreatFish(){
int fishIndex = Random.Range (0, 3);
//从资源文件夹中获得预设体
GameObject fishPerfabs=Resources .Load (fishName [fishIndex]) as GameObject ;
int x_Dic = Random.Range (0, 2);
float y = Random.Range (-2f, 3.5f);
Vector3 fishCreatPosition;
if (x_Dic ==0) {
fishCreatPosition = new Vector3 (-11.5f, y, 0);
} else {
fishCreatPosition = new Vector3 (11.5f, y, 0);
}
GameObject fish = Instantiate (fishPerfabs, fishCreatPosition, Quaternion.identity) as GameObject ;//预设体创建
}
void ShowData(){//显示杀死鱼的数据
killNumber++;
print ("当前得分为"+killNumber);
}
}
相关文章推荐
- opencv2对图像运用鼠标事件
- web.鼠标.跟着鼠标走的事件
- 程 序制作步骤,三级联动,委托事件和Repeater灵活运用以及JS知识补充
- 运用委托事件,在窗体中传递信息
- opencv2在视频帧序列中运用鼠标事件
- 面试题-冒泡与捕获、事件委托、ie事件和dom模型事件、鼠标事件
- event 事件 clientX 和clientY 配合scrollTop使用, div跟着鼠标走
- THREEJS的鼠标事件实现(中心旋转,放大缩小等)
- 委托和事件的运用
- Unity鼠标控制捕鱼达人炮筒的旋转和发射
- 通过SmartInvoke运用java与flex轻松构建cs程序(捕获鼠标键盘事件)
- 学习之路三:关于运用单线程和委托以及事件自定义Timer类
- 委托与事件参数的简单运用
- 在MFC中,运用轨迹球算法实现鼠标旋转物体
- java编写程序实现键盘钢琴,运用键盘事件、鼠标事件
- 文字围绕鼠标旋转并移动(滚轮控制半径)--鼠标事件
- 委托事件的实际运用
- JavaScript的定时器运用以及鼠标事件的运用
- 鼠标移入事件 动态元素 事件委托 鼠标移入移出 弹出对话框事件
- 跟着小王学习wpf之十二 Wpf中的鼠标事件详解