//------------------------------------------------------------------------- public void update(float elapsed_tm) { if (mIsSignDestroy) { return; } CRenderFish fish = getLockFish(); if (fish == null || fish.IsDie) { EbVector3 cur_pos = CLogicUtility.getCurrentPos(mPos, mfAngle, mfBulletSpeed, elapsed_tm); mPos = cur_pos; mSpriteBullet.setPosition(mPos); mSpriteBullet.setDirection(mfAngle); } else { float angle = CLogicUtility.getAngle(fish.Position - mPos); mPos = CLogicUtility.getCurrentPos(mPos, angle, mfBulletSpeed, elapsed_tm); mSpriteBullet.setPosition(mPos); mSpriteBullet.setDirection(angle); } if (mScene.getSceneBox().check(ref mPos, ref mfAngle)) { mLockedFishObjid = -1; mSpriteBullet.setPosition(mPos); mSpriteBullet.setDirection(mfAngle); } }
//--------------------------------------------------------------------- EbVector3 trans2local(EbVector3 point) { EbVector3 local = point - mPosition; local = CLogicUtility.getVector2ByRotateAngle(local, -mAngle); return(local); }
public override void update(float elapsed_tm) { if (Done) { return; } base.update(elapsed_tm); //线型点出鱼代码 if (getGeneratorData().mStartTime < getPassedTime()) { if (getGeneratorData().mAmount == 0) { return; } EbVector3 start_point = new EbVector3(getGeneratorData().mStartPointX, getGeneratorData().mStartPointY, 0); EbVector3 end_to_start = (new EbVector3(getGeneratorData().mEndPointX, getGeneratorData().mEndPointY, 0) - start_point); float angle = CLogicUtility.getRightAngle(CLogicUtility.getAngle(-end_to_start)); EbVector3 delta_position = end_to_start / getGeneratorData().mAmount; for (int i = getGeneratorData().mAmount; i > 0; i--) { BaseEntity entity = buildEntity(getGeneratorData().mFishVibID); entity.setPosition(start_point + delta_position * i); entity.setDirection(angle); } setDone(); } }
//--------------------------------------------------------------------- public static float angle(CDirection left_direction, CDirection right_direction) { float left = CLogicUtility.getAngle(left_direction.mDirection); float right = CLogicUtility.getAngle(right_direction.mDirection); return(_abs(left - right)); }
//--------------------------------------------------------------------- void updatePosition() { float clip = mVibFishData.CycleHeight; float offset = 0f; if (isOdd(mFishNumber)) { offset = (int)(((float)mFishNumber - 1f) / 2f); } else { offset = mFishNumber / 2 - 0.5f; } int index = 0; foreach (var it in mFishs) { it.setPosition(mPosition + new EbVector3(CLogicUtility.getDirection(mAngle + 90).x, CLogicUtility.getDirection(mAngle + 90).y, CLogicUtility.getDirection(mAngle + 90).z) * (index - offset) * clip); it.setDirection(mAngle); index++; } if (mRedBottom != null) { mRedBottom.setPosition(mPosition, mAngle); } }
//------------------------------------------------------------------------- public void s2allcManualFire(int bullet_objid, float turret_angle, int turret_rate, int locked_fish_id) { bool is_me = (mScene.getMyPlayerId() == mPlayer.et_player_rpcid); if (!is_me) { mTurretAngle = turret_angle; mTurretRate = turret_rate; mBulletFirePos = mTurretPos + CLogicUtility.getDirection(mTurretAngle).normalized *mBarrelOffset; mCSpriteTurretShow.fireAt(mTurretAngle); int bullet_vibid = mVibTurret.BulletDataKey.Id; CRenderBullet bullet = new CRenderBullet(mScene); bullet.create(mPlayer.et_player_rpcid, bullet_objid, bullet_vibid, CBulletConstant.ManualSpeed, locked_fish_id, mBulletFirePos, mTurretAngle, mVibTurret.HitFishParticleDataKey); //int vib_compose_data_id = getVibTurret().EffectComposeFire.Data.ID; //mScene.addEffect(vib_compose_data_id, new Dictionary<string, object>(), EffectTypeEnum.Client); mScene.getListener().onSceneFire(mPlayer.et_player_rpcid, getPlayerGold()); } else { mfIdleSecond = 0.0f; mfObCountdown = 60.0f; } }
//------------------------------------------------------------------------- public void updateTurretAngle(EbVector3 target_position) { EbVector3 bullet_direction = target_position - mTurretPos; mTurretAngle = CLogicUtility.getAngle(bullet_direction); mBulletFirePos = mTurretPos + bullet_direction.normalized * mBarrelOffset; mCSpriteTurretShow.aimAt(mTurretAngle); }
//----------------------------------------------------------------------------- void _initTurning() { mIsTurning = true; mTargetDirection = (mPoints[mAtWhichPoint + 1] - mPoints[mAtWhichPoint]).normalized; float included_angle = _abs(CLogicUtility.getAngle(mTargetDirection - mDirection)); mAngleTurning = included_angle / mTurningMaxTime; }
void _updateView() { foreach (var it in mFishs) { it.mFishStillSprite.setPosition(mPosition + CLogicUtility.getVector2ByRotateAngle(it.mOffset * mScale, mAngle)); it.mFishStillSprite.setDirection(mAngle); } mCycle.setPosition(mPosition); mCycle.setDirection(mAngle); }
//----------------------------------------------------------------------------- public void create(EbVector3 init_position, float init_angle, float width, float height) { mInitPosition = init_position; mInitAngle = init_angle; mDirection = CLogicUtility.getDirection(mInitAngle); mDuration = width; mParaParamB = 4 * height / width; mParaParamA = -mParaParamB / width; }
//------------------------------------------------------------------------- void _updateBufferPosition() { EbVector3 right_direction = CLogicUtility.getVector2ByRotateAngle(CLogicUtility.getDirection(mUpAngle), 90).normalized; int index = 0; foreach (var i in mMapBuffer) { i.Value.setPosition(mFisrtPoint + right_direction * index * mGap, mUpAngle); index++; } }
void updateView(CRenderFish fish) { EbVector3 turret_position = mCRenderTurret.getTurretPos(); EbVector3 fish_position = fish.Position; float turret_fish_distance = turret_position.getDistance(fish_position); int rectangle_count = (int)(turret_fish_distance / mRectangleGap); if (rectangle_count < 0) { rectangle_count = 0; } if (mRectangle.Count > rectangle_count) { int remove_count = mRectangle.Count - rectangle_count; do { mScene.getRenderObjectPool().freeStillSprite(mRectangle[0]); mRectangle.RemoveAt(0); --remove_count; } while (remove_count > 0); } else if (mRectangle.Count < rectangle_count) { int add_count = rectangle_count - mRectangle.Count; do { newRectangleSprite(); --add_count; } while (add_count > 0); } float angle = CLogicUtility.getAngle(fish_position - turret_position); float node_count = mRectangle.Count + 2; for (int i = 0; i < mRectangle.Count; i++) { mRectangle[i].setPosition(EbVector3.lerp(turret_position, fish_position, ((float)i + 1) / node_count)); mRectangle[i].setDirection(angle); } mArrow.setPosition(EbVector3.lerp(turret_position, fish_position, (node_count - 1) / node_count)); mArrow.setDirection(angle); mNumber.setPosition(fish_position); }
//------------------------------------------------------------------------- public void doOtherFire(int bullet_objid, float bullet_speed) { mBulletFirePos = mTurretPos + CLogicUtility.getDirection(mTurretAngle).normalized *mBarrelOffset; mCSpriteTurretShow.fireAt(mTurretAngle); int bullet_vibid = mVibTurret.BulletDataKey.Id; CRenderBullet bullet = new CRenderBullet(mScene); bullet.create(mPlayer.et_player_rpcid, bullet_objid, bullet_vibid, bullet_speed, _getLockedFishIdFromLockedBuffer(), mBulletFirePos, mTurretAngle, mVibTurret.HitFishParticleDataKey); mScene.getListener().onSceneFire(mPlayer.et_player_rpcid, getPlayerGold()); }
public override void update(float elapsed_tm) { if (Done) { return; } base.update(elapsed_tm); //线型点出鱼代码 if (getGeneratorData().mStartTime < getPassedTime()) { if (getGeneratorData().mAmount == 0) { return; } EbVector3 centre_position = new EbVector3(getGeneratorData().mStartPointX, getGeneratorData().mStartPointY, 0); float delta_angle = 360f / getGeneratorData().mAmount; int fish_vib_id = -1; for (int i = getGeneratorData().mAmount; i > 0; i--) { if (getGeneratorData().mRedFishIndex == i - 1) { fish_vib_id = getGeneratorData().mRedFishVibId; if (fish_vib_id <= 0) { fish_vib_id = getGeneratorData().mFishVibID; } } else { fish_vib_id = getGeneratorData().mFishVibID; } EbVector3 point_position = centre_position + CLogicUtility.getDirection(90 + delta_angle * i) * getGeneratorData().mRadius; BaseEntity entity = buildEntity( fish_vib_id); entity.setPosition(point_position); entity.setDirection(CLogicUtility.getRightAngle(CLogicUtility.getAngle(point_position - centre_position))); entity.setSpeed(getGeneratorData().mAngleSpeed * 2f * (float)Math.PI * getGeneratorData().mRadius / 360f); entity.setAngleSpeed(getGeneratorData().mAngleSpeed); } setDone(); } }
//----------------------------------------------------------------------------- void _calculateDirection(float elapsed_tm) { if (mIsTurning) { float included_angle = _abs(CLogicUtility.getAngle(mTargetDirection - mDirection)); float t = mAngleTurning * elapsed_tm / included_angle; mDirection = EbVector3.lerp(mDirection, mTargetDirection, t); if (t >= 1) { mIsTurning = false; } } }
//--------------------------------------------------------------------- public override void update(float elapsed_tm) { mOutFishDelay -= elapsed_tm; if (mOutFishDelay >= 0) { return; } if (Done) { return; } var list_serverparam = getServerParam(); int index = -1; int normal_fish_vib_id = int.Parse(list_serverparam[++index]); int red_fish_vib_id = int.Parse(list_serverparam[++index]); int red_fish_index = int.Parse(list_serverparam[++index]); int fish_count = int.Parse(list_serverparam[++index]); float position_x = float.Parse(list_serverparam[++index]); float position_y = float.Parse(list_serverparam[++index]); int red_fish_obj_id = int.Parse(list_serverparam[++index]); if (index + 2 == (int)getServerParam().Count) { position_x = float.Parse(list_serverparam[++index]); position_y = float.Parse(list_serverparam[++index]); } EbVector3 position = new EbVector3(position_x, position_y, 0); float angle = 360.0f / fish_count; for (int i = 0; i < fish_count; i++) { float direction = angle * i; int current_fish_vib_id = normal_fish_vib_id; if (i == red_fish_index) { current_fish_vib_id = red_fish_vib_id; } BaseEntity entity = buildEntity(current_fish_vib_id); entity.addRoute(RouteHelper.buildLineRoute(position, CLogicUtility.getDirection(direction), 2000)); } setDone(); }
//------------------------------------------------------------------------- void create(EbVector3 cur_pos) { string animation_name = ""; float scale_x = 1f; float scale_y = 1f; float width_x = 10f; float width_y = 60f; if (mScene.getLevel().getRandoNumber(0, 100) < 50) { animation_name = "lightening-yellow"; scale_y = width_y / 132f; width_x = 360f; } else { animation_name = "lightning-green"; scale_y = width_y / 85f; width_x = 420f; } foreach (var n in fish_list) { float distance = n.Position.getDistance(cur_pos); if (distance > 1100) { continue; } EbVector3 middle_pos = EbVector3.lerp(n.Position, cur_pos, 0.5f); StillSprite still_sprite = mScene.getRenderObjectPool().newStillSprite(); still_sprite.setPosition(middle_pos); still_sprite.setLayer(mScene.getLayerAlloter().getLayer(_eLevelLayer.FishSwim)); still_sprite.setDirection(CLogicUtility.getAngle(CLogicUtility.getVector2ByRotateAngle(cur_pos - n.Position, 90))); still_sprite.setScale(n.Position.getDistance(cur_pos) / width_x, scale_y); still_sprite.playAnimation(animation_name); mListLight.Add(still_sprite); #if UNITY_EDITOR still_sprite.gameObject.name = "TkSpriteEffectLighting_" + animation_name; #endif } }
//------------------------------------------------------------------------- public void update(float elapsed_tm) { mCurrentAngle += elapsed_tm * mAngleSpeed; EbVector3 right_direction = CLogicUtility.getVector2ByRotateAngle(CLogicUtility.getDirection(mUpAngle), 90).normalized; EbVector3 postion = mFisrtPoint + CLogicUtility.getDirection(mCurrentAngle) * mRadius; for (int i = 0; i < mMapBuffer.Count; i++) { var item = mMapBuffer.ElementAt(i); item.Value.update(elapsed_tm); item.Value.setPosition(postion + right_direction * i * mGap, mUpAngle); if (item.Value.canDestroy()) { item.Value.destroy(); mMapBuffer.Remove(item.Key); } } }
//------------------------------------------------------------------------- public void doLocalFire(int bullet_objid, float bullet_speed) { mBulletFirePos = mTurretPos + CLogicUtility.getDirection(mTurretAngle).normalized *mBarrelOffset; mCSpriteTurretShow.fireAt(mTurretAngle); int bullet_vibid = mVibTurret.BulletDataKey.Id; CRenderBullet bullet = new CRenderBullet(mScene); bullet.create(mPlayer.et_player_rpcid, bullet_objid, bullet_vibid, bullet_speed, _getLockedFishIdFromLockedBuffer(), mBulletFirePos, mTurretAngle, mVibTurret.HitFishParticleDataKey); int vib_compose_data_id = getVibTurret().EffectComposeFire.Id; mScene.addEffect(vib_compose_data_id, new Dictionary <string, object>(), EffectTypeEnum.Client); mScene.getListener().onSceneFire(mPlayer.et_player_rpcid, getPlayerGold()); }
//--------------------------------------------------------------------- public void update(float elapsed_tm) { mLifeCounter -= elapsed_tm; if (mLifeCounter < 0) { CLogicTurret turret = mScene.getTurret(mPlayerId); if (turret != null) { turret.removeBullet(mBulletObjId); } return; } // 不是机器人则直接返回 if (mBulletCollider == null) { return; } CLogicFish fish = getLockFish(); if (fish == null || fish.IsDie) { EbVector3 cur_pos = CLogicUtility.getCurrentPos(mPos, mfAngle, mfBulletSpeed, elapsed_tm); mPos = cur_pos; mBulletCollider.setPosition(mPos); } else { mfAngle = CLogicUtility.getAngle(fish.Position - mPos); mPos = CLogicUtility.getCurrentPos(mPos, mfAngle, mfBulletSpeed, elapsed_tm); mBulletCollider.setPosition(mPos); mBulletCollider.setDirection(mfAngle); } if (mScene.getSceneBox().check(ref mPos, ref mfAngle)) { mLockedFishObjid = -1; mBulletCollider.setPosition(mPos); mBulletCollider.setDirection(mfAngle); } }
//----------------------------------------------------------------------------- public void next(float elapsed_tm, float speed) { if (mIsEndRoute) { return; } mTime += elapsed_tm; if (mTime >= mDuration) { mPosition = mInitPosition; mIsEndRoute = true; return; } float delta_y = _getCurveValue(mTime); mPosition = mInitPosition + CLogicUtility.getVector2ByRotateAngle(new EbVector3(0, delta_y, 0), mInitAngle); }
//--------------------------------------------------------------------- public override void update(float elapsed_tm) { if (Done) { return; } base.update(elapsed_tm); //线型点出鱼代码 if (getGeneratorData().mStartTime < getPassedTime()) { EbVector3 position = new EbVector3(getGeneratorData().mStartPointX, getGeneratorData().mStartPointY, 0); BaseEntity entity = buildEntity(getGeneratorData().mFishVibID); entity.addRoute(RouteHelper.buildLineRoute(position, CLogicUtility.getDirection(getGeneratorData().mStartAngle), 1153.7f)); entity.setSpeed(getGeneratorData().mSpeed); setDone(); } }
//--------------------------------------------------------------------- public override void update(float elapsed_tm) { if (Done) { return; } base.update(elapsed_tm); if (getGeneratorData().mStartTime < getPassedTime()) { if (getGeneratorData().mAmount != 0) { float delta_angle = 360f / getGeneratorData().mAmount; EbVector3 position = new EbVector3(getGeneratorData().mGenerationPointX, getGeneratorData().mGenerationPointY, 0); BaseEntity base_entity = null; for (int i = getGeneratorData().mAmount; i > 0; i--) { if (getGeneratorData().mRadius == 0) { base_entity = buildEntity(getGeneratorData().mFishVibID); base_entity.setPosition(position); base_entity.setDirection(delta_angle * i); } else { base_entity = buildEntity(getGeneratorData().mFishVibID); base_entity.setPosition(position + CLogicUtility.getDirection(delta_angle * i) * getGeneratorData().mRadius); base_entity.setDirection(delta_angle * i); } base_entity.setSpeed(getGeneratorData().mSpeed); } } setDone(); } }
//------------------------------------------------------------------------- public void update(float elapsed_tm) { if (mDynamicSystem != null) { mTotalElapsedTime += elapsed_tm; EbVector3 acc = mDynamicSystem.getAcce(mTotalElapsedTime, mViSpeed); if (mDynamicSystem.IsDelay) { } else { mViSpeed = mViSpeed + acc * elapsed_tm; mPosition = mPosition + mViSpeed * elapsed_tm; mAngle = CLogicUtility.getAngle(mViSpeed); if (mDynamicSystem.IsEnd) { mIsEndRoute = true; } } } else if (mIRoute != null) { mIRoute.next(elapsed_tm, mSpeed); mPosition = mIRoute.Position; mAngle = CLogicUtility.getAngle(mIRoute.Direction); if (mIRoute.IsEndRoute) { mIsEndRoute = true; } } else { //mAngle += mAngleSpeed * elapsed_tm; float newAngle = mAngle + mAngleSpeed * elapsed_tm; if (mAngleSpeed > 0) { if (mAngle <= 180 && newAngle > 180) { mAngle = newAngle - 360; } else { mAngle = newAngle; } } else { //if (mAngle <= -180) mAngle = mAngle - 180; if (mAngle > -180 && newAngle <= 180) { mAngle = newAngle + 360; } else { mAngle = newAngle; } } //mAngle = regularAngle(mAngle); mPosition += CLogicUtility.getDirection(mAngle) * mSpeed * elapsed_tm; } _updateState(); }
//--------------------------------------------------------------------- float randomTurretAngle() { EbVector3 bullet_direction = randomTarget() - mTurret.getTurretPos(); return(CLogicUtility.getAngle(bullet_direction)); }
//--------------------------------------------------------------------- public bool check(ref EbVector3 position, ref float direction) { EbVector3 dir_vector = CLogicUtility.getDirection(direction); if (position.x < -CCoordinate.LogicSceneLength / 2) { if (dir_vector.x == 0) { return(false); } EbVector3 return_postion = new EbVector3(); return_postion.x = -CCoordinate.LogicSceneLength / 2; return_postion.y = straightLineEquationByX(position, dir_vector, return_postion.x); return_postion.z = position.z; position = return_postion; dir_vector.x = -dir_vector.x; direction = CLogicUtility.getAngle(dir_vector); return(true); } if (position.x > CCoordinate.LogicSceneLength / 2) { if (dir_vector.x == 0) { return(false); } EbVector3 return_postion = new EbVector3(); return_postion.x = CCoordinate.LogicSceneLength / 2; return_postion.y = straightLineEquationByX(position, dir_vector, return_postion.x); return_postion.z = position.z; position = return_postion; dir_vector.x = -dir_vector.x; direction = CLogicUtility.getAngle(dir_vector); return(true); } if (position.y < -CCoordinate.LogicSceneWidth / 2) { if (dir_vector.y == 0) { return(false); } EbVector3 return_postion = new EbVector3(); return_postion.y = -CCoordinate.LogicSceneWidth / 2; return_postion.x = straightLineEquationByY(position, dir_vector, return_postion.y); return_postion.z = position.z; position = return_postion; dir_vector.y = -dir_vector.y; direction = CLogicUtility.getAngle(dir_vector); return(true); } if (position.y > CCoordinate.LogicSceneWidth / 2) { if (dir_vector.y == 0) { return(false); } EbVector3 return_postion = new EbVector3(); return_postion.y = CCoordinate.LogicSceneWidth / 2; return_postion.x = straightLineEquationByY(position, dir_vector, return_postion.y); return_postion.z = position.z; position = return_postion; dir_vector.y = -dir_vector.y; direction = CLogicUtility.getAngle(dir_vector); return(true); } return(false); }
//--------------------------------------------------------------------- public CAngle toAngle() { return(new CAngle(CLogicUtility.getAngle(mDirection))); }
//--------------------------------------------------------------------- public CDirection(float angle) { mDirection = CLogicUtility.getDirection(angle); }
//--------------------------------------------------------------------- float getTurretAngle(EbVector3 target_position) { EbVector3 bullet_direction = target_position - mTurret.getTurretPos(); return(CLogicUtility.getAngle(bullet_direction)); }
//------------------------------------------------------------------------- public void setTurretAngle(float turret_angel) { mTurretAngle = turret_angel; mBulletFirePos = mTurretPos + CLogicUtility.getDirection(mTurretAngle).normalized *mBarrelOffset; mCSpriteTurretShow.aimAt(mTurretAngle); }