独立游戏开发(七)-- 随机游走病毒及追踪角色病毒实现

接下来就是多种病毒的实现了,为此,我们先定义3中病毒:
在这里插入图片描述
先根据类型创建不同种类病毒

var type = (VirusDefine.VirusType) _virusDatas[virusId].Type;
switch (type)
{
    case VirusDefine.VirusType.Ordinary:
        var ordVirus = prefab.AddComponent<OrdinaryVirus>();
        ordVirus.SetVirusData(_virusDatas[virusId]);
        break;
    case VirusDefine.VirusType.Track:
        var trackVirus = prefab.AddComponent<TrackVirus>();
        trackVirus.SetVirusData(_virusDatas[virusId]);
        break;
     case VirusDefine.VirusType.Breed:
        break;
}

先来实现第一种病毒;
首先先看看普通病毒的定义及特点:
在这里插入图片描述
普通病毒的特点暂定为随处游走,那我们就得就得为他创造一个随机点算法:

/// <summary>
///  得到一个随机位置
/// </summary>
/// <returns></returns>
protected Vector3 GetRandomPosInBoard()
{
    var x = Random.Range(-ConfigDefine.MapWidth / 2 + _virusData.Radius, ConfigDefine.MapWidth / 2 - _virusData.Radius);
    var y = Random.Range(-ConfigDefine.MapHeight / 2 + _virusData.Radius, ConfigDefine.MapHeight / 2 - _virusData.Radius);

    return new Vector3(x, y, 0);
}

然后我们就可以让目标实现随处走动:效果如图:
在这里插入图片描述
接下来实现第二种病毒;
首先先看看追踪病毒的定义及特点:
在这里插入图片描述
追踪病毒的特点暂定为追踪player,然后一开始要随机到边界点,看上去散开的,不会一窝蜂的跑到player,那我们就得就得为他创造一个随机边界算法:

/// <summary>
/// 得到最近的边界点
/// </summary>
/// <returns></returns>
protected Vector3 GetNearestBoardPos()
{
    float x = 0;
    float y = 0;
    if (-ConfigDefine.MapWidth / 2 < _transform.position.x && _transform.position.x < ConfigDefine.MapWidth / 2)
    {
        // y 值
        x = Random.Range(-ConfigDefine.MapWidth / 2 + _virusData.Radius, ConfigDefine.MapWidth / 2 - _virusData.Radius);
        y = _transform.position.y > ConfigDefine.MapHeight / 2 ? ConfigDefine.MapHeight / 2 : -ConfigDefine.MapHeight / 2;
    }

    if (-ConfigDefine.MapHeight / 2 < _transform.position.y && _transform.position.y < ConfigDefine.MapHeight / 2)
    {
        x = _transform.position.x > ConfigDefine.MapWidth / 2 ? ConfigDefine.MapWidth / 2 : -ConfigDefine.MapWidth / 2;
        y = Random.Range(-ConfigDefine.MapHeight / 2 + _virusData.Radius, ConfigDefine.MapHeight / 2 - _virusData.Radius);
    }
    
    return new Vector3(x, y, 0);
}

然后看效果图:
在这里插入图片描述
绿色的就是追踪病毒,红色的就是随机病毒。

接下来就是第三种病毒,繁殖病毒。。。
这个我还没想好表现方式,,我先想想吧。

总结:这次主要将病毒的类型给做区分并实现了随机病毒和追踪病毒。

传送门:独立游戏开发–索引

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值