/// <summary> /// 做加速运动(限制最大速度) /// <para>bullet 敌机子弹</para> /// <para>float acce 加速度</para> /// <para>float angle 速度方向 or bool useVAngle使用速度方向</para> /// <para>bool isAimToPlayer 是否朝向玩家</para> /// <para>float maxVelocity 最大速度限制</para> /// </summary> /// <param name="luaState"></param> /// <returns></returns> public static int EnemyBulletDoAccelerationWithLimitation(ILuaState luaState) { EnemyBulletBase bullet = luaState.ToUserData(-5) as EnemyBulletBase; float acce = (float)luaState.ToNumber(-4); float angle; if (luaState.Type(-3) == LuaType.LUA_TBOOLEAN) { bullet.GetBulletPara(BulletParaType.VAngel, out angle); } else { angle = (float)luaState.ToNumber(-3); } bool isAimToPlayer = luaState.ToBoolean(-2); float maxVelocity = (float)luaState.ToNumber(-1); luaState.Pop(5); if (isAimToPlayer) { Vector2 playerPos = PlayerInterface.GetInstance().GetCharacter().GetPosition(); angle += MathUtil.GetAngleBetweenXAxis(playerPos - bullet.GetPosition()); } bullet.DoAccelerationWithLimitation(acce, angle, maxVelocity); return(0); }
private void CacheChangeData(BulletParasChangeData changeData) { changeData.isCached = true; float beginValue; if (!_bullet.GetBulletPara(changeData.paraType, out beginValue)) { changeData.isFinish = true; Logger.LogWarn("ParasChange Warn :ParaType is not valid for bullet"); } else { changeData.begin = beginValue; float value = GetValueByChangeValue(changeData.changeValue); switch (changeData.changeMode) { case ParaChangeMode.ChangeTo: changeData.end = value; break; case ParaChangeMode.IncBy: changeData.end = changeData.begin + value; break; case ParaChangeMode.DecBy: changeData.end = changeData.begin - value; break; } } }
/// <summary> /// 获取子弹的属性 /// <para>bullet</para> /// <para>BulletParaType paraType</para> /// </summary> /// <param name="luaState"></param> /// <returns></returns> public static int GetBulletPara(ILuaState luaState) { EnemyBulletBase bullet = luaState.ToUserData(-2) as EnemyBulletBase; BulletParaType paraType = (BulletParaType)luaState.ToInteger(-1); luaState.Pop(2); float value; if (bullet.GetBulletPara(paraType, out value)) { luaState.PushNumber(value); return(1); } Logger.LogWarn("BulletPara " + paraType + " in " + bullet.Type + " is not exist!"); return(0); }