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; }