吃豆人部分代码分析

吃豆人的项目下载地址,某位大神做的,亮点是参考地图生成的部分

http://game.ceeger.com/forum/read.php?tid=160


地图用一个txt文件,如下图的文件,x表示墙的部分,.表示可吃的豆豆,  O表示一些特殊种类的豆豆

O............X.....XXX.XX............O
.XXXXX.X.X.X.X.XXX...X....XXXX.XXXX.XX
.X.....X...X.XXX.XXX.X.X.XX.....X.X.XX
.X.XXX.XXXXX.......X.X.X.X..X.X.X.X.X.


然后看看代码  js写的

var mapAsset : TextAsset;
var blockPrefab : Transform;
var pelletPrefab : Transform; 
var superPrefab : Transform;

///看起来好像很简单,可是实际操作时往往不知道从哪下手,简单来说:

1确定这个虚拟世界的维度:这个地图的维度是2,所以至少有两个循环的

function Awake () {
    var map = mapAsset.text.Split ("\n"[0]); //以回车符来划分一行行的东西
    var v = new Vector3 ();
    v.y = 1.0;
    var j_off = map.length / 2.0; 
    for (var j = 0; j < map.length; j ++) {  //每一行
        v.z = (map.length - j - j_off - 1) * 2;
        var i_off = map[j].length / 2.0;
        for (var i = 0; i < map[j].length; i ++) {  //每一列的东西
            v.x = (i - i_off) * 2 + 1;
            if (map[j][i] == "X") {       //字符 对应的 东西来摆放
                var inst = Instantiate (blockPrefab, v, Quaternion.identity);
                inst.transform.parent = transform;
            } else if (map[j][i] == ".") {
                Instantiate (pelletPrefab, v, Quaternion.identity);
            } else if (map[j][i] == "O") {
                Instantiate (superPrefab, v, Quaternion.identity);
            }
        }
    }
}

再看看怪物是怎么移动的

var howLong = 1.0;   //每次移动长度
var howFast = 8.0;    //多快?
private var nextUpdate = 0.0;
private var direction : Vector3;

function Update () {
    if (Time.time > nextUpdate) {
        nextUpdate = Time.time + (Random.value * howLong);
        direction = Random.onUnitSphere;  //球体的随机分布
        direction.y = 0;  //设置y=0后,球体的分布趋向于圆心,可以抽象的想象中心的点比旁边的更多
        direction.Normalize (); //归一化成1
        direction *= howFast;  //1* 速度
        direction.y = 1.5 - transform.position.y;
    }
    var controller = GetComponent(CharacterController);
    controller.Move(direction * Time.deltaTime);
}

//说实话  这个ai十分之蛋疼    到处乱跑, 可以修改之作为A*的项目




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值