Exemple #1
0
    public static int SetLaserGrazeDetectParas(ILuaState luaState)
    {
        EnemyLaser       laser       = luaState.ToUserData(-3) as EnemyLaser;
        GrazeDetectParas detectParas = new GrazeDetectParas()
        {
            type       = GrazeDetectType.Rect,
            halfWidth  = (float)luaState.ToNumber(-2),
            halfHeight = (float)luaState.ToNumber(-1),
        };

        luaState.Pop(3);
        laser.SetGrazeDetectParas(detectParas);
        return(0);
    }
    public override void SetStyleById(string id)
    {
        // 根据传入的id读取配置,重新生成数据
        EnemyBulletDefaultCfg cfg = BulletsManager.GetInstance().GetBulletDefaultCfgById(id);

        if (cfg == null)
        {
            Logger.LogError("Bullet ChangeStyle Fail! SysId  " + id + " is not exist!");
            return;
        }
        if (_bullet != null)
        {
            // 回收现有的prefab
            ObjectsPool.GetInstance().RestorePrefabToPool(_prefabName, _bullet);
        }
        _cfg        = cfg;
        _prefabName = _cfg.id;
        _bullet     = BulletsManager.GetInstance().CreateBulletGameObject(_type, _cfg.id);
        _trans      = _bullet.transform;
        _spRenderer = _trans.Find("BulletSprite").GetComponent <SpriteRenderer>();
        SetPosition(_curPos.x, _curPos.y);
        SetRotatedByVelocity(cfg.isRotatedByVAngle);
        SetSelfRotation(cfg.selfRotationAngle);
        GrazeDetectParas grazeParas = new GrazeDetectParas
        {
            type       = GrazeDetectType.Rect,
            halfWidth  = cfg.grazeHalfWidth,
            halfHeight = cfg.grazeHalfHeight,
        };

        _collisionHalfWidth  = cfg.collisionRadius * _scaleX;
        _collisionHalfHeight = cfg.collisionRadius * _scaleY;
        _collisionRadius     = cfg.collisionRadius * _scaleX;
        // 计算用于擦弹以及碰撞检测的两个数值
        // 擦弹
        float value = Global.PlayerGrazeRadius + _collisionRadius;

        _detGrazeValue = value * value;
        // 碰撞
        value             = Global.PlayerCollisionVec.z + _collisionRadius;
        _detCollisonValue = value * value;
        SetGrazeDetectParas(grazeParas);
        _aniFrameCount     = _cfg.aniFrameCount;
        _aniFrameInterval  = _cfg.aniFrameInterval;
        _curAniTimeCounter = 0;
        _curAniIndex       = 0;
    }
 public override void SetGrazeDetectParas(GrazeDetectParas paras)
 {
     _grazeHalfWidth = paras.halfWidth;
     _grazeHalfHeight = paras.halfHeight;
     base.SetGrazeDetectParas(paras);
 }
 public virtual void SetGrazeDetectParas(GrazeDetectParas paras)
 {
     _grazeParas = paras;
 }