Example #1
0
    /// <summary>
    /// 根据ChangeValue的值获取对应的值并返回
    /// </summary>
    /// <param name="changeValue"></param>
    /// <returns></returns>
    private float GetValueByChangeValue(ParaChangeValue changeValue)
    {
        float value = 0;

        if (changeValue.argType == 0)
        {
            value = changeValue.arg0;
        }
        else if (changeValue.argType == 1)
        {
            Vector2 playerPos = new Vector2(Global.PlayerPos.x, Global.PlayerPos.y);
            Vector2 bulletPos = _bullet.GetPosition();
            float   angle     = MathUtil.GetAngleBetweenXAxis(playerPos - bulletPos);
            value = angle;
        }
        else if (changeValue.argType == 2)
        {
            Vector2 targetPos = new Vector2(changeValue.arg0, changeValue.arg1);
            Vector2 bulletPos = _bullet.GetPosition();
            float   angle     = MathUtil.GetAngleBetweenXAxis(targetPos - bulletPos);
            value = angle;
        }
        if (changeValue.offset != 0)
        {
            value += MTRandom.GetNextFloat(-changeValue.offset, changeValue.offset);
        }
        return(value);
    }
Example #2
0
    /// <summary>
    /// 使用组件进行移动参数变更,
    /// <para>具体参数参考AddParaChangeEvent方法</para>
    /// <para>bullet</para>
    /// <para>para MovePara</para>
    /// <para>changeMode 改变方式 ChangeTo,IncBy,DecBy,ChangeTo</para>
    /// <para>valueType 参数类型</para>
    /// <para>arg0 参数0</para>
    /// <para>arg1 参数1</para>
    /// <para>valueOffset 随机偏移量</para>
    /// <para>delay 起始延迟</para>
    /// <para>duration 变化持续时间</para>
    /// <para>intMode 插值方式</para>
    /// <para>repeatCount 重复次数</para>
    /// <para>repeatInterval 每次重复的间隔</para>
    /// <para>总计12个参数</para>
    /// </summary>
    /// <param name="luaState"></param>
    /// <returns></returns>
    public static int AddBulletParaChangeEvent(ILuaState luaState)
    {
        EnemyBulletBase   bullet         = luaState.ToUserData(-12) as EnemyBulletBase;
        BulletParaType    para           = (BulletParaType)luaState.ToInteger(-11);
        ParaChangeMode    changeMode     = (ParaChangeMode)luaState.ToInteger(-10);
        int               valueType      = luaState.ToInteger(-9);
        float             arg0           = (float)luaState.ToNumber(-8);
        float             arg1           = (float)luaState.ToNumber(-7);
        float             valueOffset    = (float)luaState.ToNumber(-6);
        int               delay          = luaState.ToInteger(-5);
        int               duration       = luaState.ToInteger(-4);
        InterpolationMode intMode        = (InterpolationMode)luaState.ToInteger(-3);
        int               repeatCount    = luaState.ToInteger(-2);
        int               repeatInterval = luaState.ToInteger(-1);
        BCParasChange     bc             = bullet.AddOrGetComponent <BCParasChange>();
        ParaChangeValue   changeValue    = new ParaChangeValue
        {
            argType = valueType,
            arg0    = arg0,
            arg1    = arg1,
            offset  = valueOffset,
        };

        bc.AddParaChangeEvent(para, changeMode, changeValue, delay, duration, intMode, repeatCount, repeatInterval);
        return(0);
    }
Example #3
0
    /// <summary>
    /// 添加改变参数的事件
    /// </summary>
    /// <param name="para">参数类型</param>
    /// <param name="changeMode">改变的模式,(增加到、减少到、变化到)</param>
    /// <param name="changeValue">改变的值</param>
    /// <param name="valueOffset">改变的值的上下偏移</param>
    /// <param name="delay">延迟</param>
    /// <param name="duration">变化的持续时间</param>
    /// <param name="intMode">变化的插值方式</param>
    /// <param name="repeatCount">重复次数</param>
    /// <param name="repeatInterval">重复的时间间隔</param>
    public void AddParaChangeEvent(BulletParaType para, ParaChangeMode changeMode,
                                   ParaChangeValue value, int delay, float duration, InterpolationMode intMode, int repeatCount, int repeatInterval)
    {
        BulletParasChangeData changeData = CreateChangeData(para, intMode);

        changeData.changeMode  = changeMode;
        changeData.changeValue = value;
        changeData.delay       = delay;
        changeData.changeTime  = 0;
        // duration小于等于0时默认设置为1,以免报错
        if (duration <= 0)
        {
            duration = 1;
        }
        changeData.changeDuration = duration;
        changeData.repeatCount    = repeatCount;
        changeData.repeatInterval = repeatInterval;
        _changeList.Add(changeData);
        _listCount++;
    }