Unity实例开发-AlienShooter(二)

本文介绍了Unity中实现游戏开发的过程,涉及A*寻路算法的详细步骤,包括初始化地图、寻路方法、音乐控制、子弹碰撞、相机控制、敌人行为、敌人生成、地图生成和玩家交互等关键环节,展示了如何在游戏场景中应用A*算法实现智能路径规划。
摘要由CSDN通过智能技术生成

通往下一关:

脚本及其实现方法:

自动删除脚本AutoDestroy:

控制每次子弹发射后自动销毁。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AutoDestroy : MonoBehaviour {

    // Use this for initialization
    //子弹创建后自动销毁
    void Start () {
	Destroy (gameObject, 0.1f);	
    }
}

传送门Door:

一个碰撞方法,控制与玩家的碰撞。

通关方法:首先限制玩家的移动,然后加载幕布,重置玩家的位置,重置地图,最后恢复玩家的移动,销毁传送门。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Door : MonoBehaviour {
    // Use this for initialization
    void OnCollisionEnter(Collision col)
    {
	//碰撞方法:如果是玩家与其发生了碰撞 执行通关方法
	if (col.transform.tag == "Player")
	    StartCoroutine (Operator (col.transform.GetComponent<MyPlayer> ()));
    }
    //通关方法
    private IEnumerator Operator(MyPlayer player)
    {
	player.enabled = false;									//限制玩家移动
	yield return new WaitForSeconds (1f);					
	Vector3 pos = player.transform.position;
	UIManager.Instance.Init ();								//黑幕
	++GlobeValue.Level;									//关卡递增
	pos.x = new IntegerVector2 (0, 0).X;					//重置玩家位置
	pos.z = new IntegerVector2 (0, 0).Z;
	player.transform.position = pos;						
	FindObjectOfType<MyMap> ().InitMap ();					//重置地图
	player.enabled = true;									//恢复玩家移动
	Destroy (gameObject);									//销毁传送门	
    }
}

  GlobeValue:

保存游戏需要的全局变量。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GlobeValue : MonoBehaviour {
    //全局变量
    public static int Level = 0;   	//关卡
    public static int Score = 0;	//得分
}

A*算法 AStar脚本:

A*寻路算法:
    1. 从起点A开始, 把它作为待处理的方格存入一个"开启列表", 开启列表就是一个等待检查方格的列表. 
    2. 寻找起点A周围可以到达的方格, 将它们放入"开启列表", 并设置它们的"父方格"为A. 
    3. "开启列表"中删除起点 A, 并将起点 A 加入"关闭列表", "关闭列表"中存放的都是不需要再次检查的方格
    图中浅绿色描边的方块表示已经加入 "开启列表" 等待检查. 淡蓝色描边的起点 A 表示已经放入 "关闭列表" , 
    它不需要再执行检查.  "开启列表" 中找出相对最靠谱的方块, 什么是最靠谱? 它们通过公式 F=G+H 来计算.
    F = G + H 
        G 表示从起点 A 移动到网格上指定方格的移动耗费 (可沿斜方向移动). 
        H 表示从指定的方格移动到终点 B 的预计耗费 (H 有很多计算方法, 这里我们设定只可以上下左右移动).
    4. 把它从 "开启列表" 中删除, 并放到 "关闭列表" . 
    5. 检查它所有相邻并且可以到达 (障碍物和 "关闭列表" 的方格都不考虑) 的方格. 如果这些方格还不在 
    "开启列表" 里的话, 将它们加入 "

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值