public override void initialize() { var textureAtlas = contentManager.Load <TextureAtlas>("bin/MacOSX/TextureAtlasTest/AtlasImages"); var parentEntity = createEntity("parent"); parentEntity.transform.position = new Vector2(300, 300); parentEntity.transform.rotation = MathHelper.PiOver4; parentEntity.addComponent(new Sprite(textureAtlas.getSubtexture("Ninja_Idle_0"))); var childEntity = createEntity("child"); childEntity.transform.parent = parentEntity.transform; childEntity.transform.localPosition = new Vector2(50, 0); childEntity.transform.scale = new Vector2(2, 2); childEntity.transform.rotation = 0.5f; childEntity.addComponent(new Sprite(textureAtlas.getSubtexture("Ninja_Idle_1"))); var childTwoEntity = createEntity("childTwo"); childTwoEntity.transform.parent = childEntity.transform; childTwoEntity.addComponent(new Sprite(textureAtlas.getSubtexture("Ninja_Idle_2"))); childTwoEntity.transform.localPosition = new Vector2(50, 0); childTwoEntity.transform.rotation = 0.5f; PropertyTweens.floatPropertyTo(parentEntity.transform, "rotation", MathHelper.TwoPi, 1).start(); //PropertyTweens.floatPropertyTo( childTwoEntity.transform, "rotation", MathHelper.TwoPi, 1 ).start(); }
void LightTweenCompleted(ITween <Vector2> tween) { // get a random point on screen and a random delay for the tweens var target = new Vector2(Random.Range(50, SceneRenderTargetSize.X - 100), Random.Range(50, SceneRenderTargetSize.Y - 100)); var delay = Random.Range(0f, 1f); var transform = tween.GetTargetObject() as Transform; tween.PrepareForReuse(transform.Position, target, 2f) .SetCompletionHandler(LightTweenCompleted) .SetDelay(delay) .Start(); // every so often add a scale tween if (Random.Chance(60)) { transform.TweenLocalScaleTo(transform.LocalScale.X * 2f, 1f) .SetLoops(LoopType.PingPong) .SetEaseType(EaseType.CubicIn) .SetDelay(delay) .Start(); } // every so often change our color if (Random.Chance(80)) { var sprite = transform.Entity.GetComponent <SpriteRenderer>(); PropertyTweens.ColorPropertyTo(sprite, "Color", Random.NextColor(), 2f) .SetDelay(delay) .Start(); } }
void lightTweenCompleted(ITween <Vector2> tween) { // get a random point on screen and a random delay for the tweens var target = new Vector2(Nez.Random.range(50, sceneRenderTargetSize.X - 100), Nez.Random.range(50, sceneRenderTargetSize.Y - 100)); var delay = Nez.Random.range(0f, 1f); var transform = tween.getTargetObject() as Transform; tween.prepareForReuse(transform.position, target, 2f) .setCompletionHandler(lightTweenCompleted) .setDelay(delay) .start(); // every so often add a scale tween if (Nez.Random.chance(0.6f)) { transform.tweenLocalScaleTo(transform.localScale.X * 2f, 1f) .setLoops(LoopType.PingPong) .setEaseType(EaseType.CubicIn) .setDelay(delay) .start(); } // every so often change our color if (Nez.Random.chance(0.8f)) { var sprite = transform.entity.getComponent <Sprite>(); PropertyTweens.colorPropertyTo(sprite, "color", Nez.Random.nextColor(), 2f) .setDelay(delay) .start(); } }
/// <summary> /// Called when tooltip is hidden. Default implementation sets actions to animate hiding and to remove the Element from the stage /// when the actions are complete. /// </summary> /// <returns>The action.</returns> /// <param name="tooltip">Tooltip.</param> protected void hideAction(Tooltip tooltip) { var container = tooltip.getContainer(); if (animations) { PropertyTweens.floatPropertyTo(container, "scaleX", 0.2f, 0.2f).setEaseType(EaseType.QuintOut).start(); PropertyTweens.floatPropertyTo(container, "scaleY", 0.2f, 0.2f).setEaseType(EaseType.QuintOut) .setCompletionHandler(t => container.remove()).start(); } else { container.remove(); } }
/// <summary> /// Called when tooltip is shown. Default implementation sets actions to animate showing. /// </summary> /// <returns>The action.</returns> /// <param name="tooltip">Tooltip.</param> protected void showAction(Tooltip tooltip) { var container = tooltip.getContainer(); if (animations) { var actionTime = _time > 0 ? 0.3f : 0.15f; container.setTransform(true); container.setScale(0.5f); PropertyTweens.floatPropertyTo(container, "scaleX", 1, actionTime).setEaseType(EaseType.QuintIn).start(); PropertyTweens.floatPropertyTo(container, "scaleY", 1, actionTime).setEaseType(EaseType.QuintIn).start(); } else { container.setScale(1); } }
public static ITween <Vector3> Tween(this object self, string memberName, Vector3 to, float duration) { return(PropertyTweens.Vector3PropertyTo(self, memberName, to, duration)); }
public static ITween <Color> Tween(this object self, string memberName, Color to, float duration) { return(PropertyTweens.ColorPropertyTo(self, memberName, to, duration)); }
public static ITween <float> Tween(this object self, string memberName, float to, float duration) { return(PropertyTweens.FloatPropertyTo(self, memberName, to, duration)); }
// Use this for initialization void Start() { InitialPosition = transform.position; PropertyTweens.floatPropertyTo(this, "PositionY", Range.y, duration).setEaseType(ease).setLoops(LoopType.PingPong, 100).start(); }
protected override void Update(GameTime gameTime) { base.Update(gameTime); if (Input.rightMouseButtonPressed) { Debug.log("window size: {0} x {1}", Window.ClientBounds.Width, Window.ClientBounds.Height); } if (Input.leftMouseButtonPressed) { var screenPt = scene.camera.screenToWorldPoint(Input.scaledMousePosition); var worldPt = scene.camera.worldToScreenPoint(screenPt); Debug.log("mouse pos: {0}, scaled mouse pos: {1}, screen to world point: {2}, world to screen point: {3}", Input.rawMousePosition, Input.scaledMousePosition, screenPt, worldPt); var spriteDude = scene.findEntity("sprite-dude"); if (spriteDude != null) { spriteDude.getComponent <Sprite <int> >().pause(); var worldPos = scene.camera.screenToWorldPoint(Input.scaledMousePosition); PropertyTweens.vector2PropertyTo(spriteDude.transform, "position", worldPos, 0.5f) .setLoops(LoopType.PingPong, 1) .setContext(spriteDude) .setCompletionHandler(tween => { var sprite = (tween.context as Entity).getComponent <Sprite <int> >(); // if the scene changed during the tween sprite will be null if (sprite != null) { sprite.unPause(); } }) .start(); PropertyTweens.vector2PropertyTo(spriteDude.transform, "scale", new Vector2(1.5f, 2.5f), 1f) .setLoops(LoopType.PingPong, 1) .start(); PropertyTweens.floatPropertyTo(spriteDude.transform, "rotation", MathHelper.PiOver2, 1f) .setLoops(LoopType.PingPong, 1) .start(); } var playerDude = scene.findEntity("player-moon"); if (playerDude != null) { var start = playerDude.transform.position + new Vector2(64f, 0f); var end = playerDude.transform.position + new Vector2(256f, 0f); Debug.drawLine(start, end, Color.Black, 2f); var hit = Physics.linecast(start, end); if (hit.collider != null) { Debug.log("ray HIT {0}, collider: {1}", hit, hit.collider.entity); } } var cam = scene.findEntity("camera-follow"); if (cam != null && cam.getComponent <CameraShake>() != null) { cam.getComponent <CameraShake>().shake(); } var particles = scene.findEntity("particles"); if (particles != null && particles.getComponent <ParticleEmitter>() != null) { if (particles.getComponent <ParticleEmitter>().isPlaying) { particles.getComponent <ParticleEmitter>().pause(); } else { particles.getComponent <ParticleEmitter>().play(); } } } // allow click-drag to move the camera if (Input.leftMouseButtonDown) { var deltaPos = Input.scaledMousePositionDelta; scene.camera.position -= deltaPos; } if (Input.mouseWheelDelta != 0) { scene.camera.zoomIn(Input.mouseWheelDelta * 0.0001f); } }
void OnGUI() { DemoGUIHelpers.setupGUIButtons(); _duration = DemoGUIHelpers.durationSlider(_duration); if (_springTween == null) { if (GUILayout.Button("Custom Property Tween (wackyDoodleWidth)")) { PropertyTweens.floatPropertyTo(this, "wackyDoodleWidth", 1f, 6f, _duration) .setLoops(LoopType.PingPong) .start(); } if (GUILayout.Button("Position via Property Tween")) { PropertyTweens.vector3PropertyTo(cube, "position", cube.position, new Vector3(5f, 5f, 5f), _duration) .setLoops(LoopType.PingPong) .start(); } if (GUILayout.Button("Tween Party (color, position, scale and rotation)")) { var party = new TweenParty(_duration); party.addTween(cube.GetComponent <Renderer>().material.ZKcolorTo(Color.black)) .addTween(cube.ZKpositionTo(new Vector3(7f, 4f))) .addTween(cube.ZKlocalScaleTo(new Vector3(1f, 4f))) .addTween(cube.ZKrotationTo(Quaternion.AngleAxis(180f, Vector3.one))) .setLoops(LoopType.PingPong) .start(); } if (GUILayout.Button("Tween Chain (same props as the party)")) { var chain = new TweenChain(); chain.appendTween(cube.GetComponent <Renderer>().material.ZKcolorTo(Color.black, _duration).setLoops(LoopType.PingPong)) .appendTween(cube.ZKpositionTo(new Vector3(7f, 4f), _duration).setLoops(LoopType.PingPong)) .appendTween(cube.ZKlocalScaleTo(new Vector3(1f, 4f), _duration).setLoops(LoopType.PingPong)) .appendTween(cube.ZKrotationTo(Quaternion.AngleAxis(180f, Vector3.one), _duration).setLoops(LoopType.PingPong)) .start(); } if (GUILayout.Button("Chaining Tweens Directly (same props as the party)")) { cube.GetComponent <Renderer>().material.ZKcolorTo(Color.black).setLoops(LoopType.PingPong) .setNextTween ( cube.ZKpositionTo(new Vector3(7f, 4f)).setLoops(LoopType.PingPong).setNextTween ( cube.ZKlocalScaleTo(new Vector3(1f, 4f)).setLoops(LoopType.PingPong).setNextTween ( cube.ZKrotationTo(Quaternion.AngleAxis(180f, Vector3.one)).setLoops(LoopType.PingPong) ) ) ) .start(); } if (GUILayout.Button("Start Spring Position")) { _springTween = new TransformSpringTween(cube, TransformTargetType.Position, cube.position); } if (GUILayout.Button("Start Spring Scale")) { _springTween = new TransformSpringTween(cube, TransformTargetType.LocalScale, cube.localScale); } } else { GUILayout.Label("While the spring tween is active the cube will spring to\n" + "whichever location you click or scale x/y to that location\n" + "if you chose a scale spring. The sliders below let you tweak\n" + "the spring contants.\n\n" + "For the scale tween, try clicking places on a horizontal or vertical\n" + "axis to get a feel for how it works."); springSliders(); if (GUILayout.Button("Stop Spring")) { _springTween.stop(); _springTween = null; cube.position = new Vector3(-1f, -2f); cube.localScale = Vector3.one; } } DemoGUIHelpers.easeTypesGUI(); }
public override void initialize() { base.initialize(); Screen.setSize(1280, 720); // render layer for all lights and any emissive Sprites var LIGHT_RENDER_LAYER = 5; clearColor = Color.MonoGameOrange; // create a Renderer that renders all but the light layer and screen space layer addRenderer(new RenderLayerExcludeRenderer(0, LIGHT_RENDER_LAYER, SCREEN_SPACE_RENDER_LAYER)); // create a Renderer that renders only the light layer into a render target var lightRenderer = addRenderer(new RenderLayerRenderer(-1, LIGHT_RENDER_LAYER)); lightRenderer.renderTargetClearColor = new Color(10, 10, 10, 255); lightRenderer.renderTexture = new RenderTexture(); // add a PostProcessor that renders the light render target addPostProcessor(new SpriteLightPostProcessor(0, lightRenderer.renderTexture)); var lightTexture = contentManager.Load <Texture2D>("Shadows/sprite-light"); var moonTexture = contentManager.Load <Texture2D>("Shared/moon"); var blockTexture = contentManager.Load <Texture2D>("Shadows/Block"); var blockGlowTexture = contentManager.Load <Texture2D>("Shadows/BlockGlow"); // create some moons Action <Vector2, string, bool> boxMaker = (Vector2 pos, string name, bool isTrigger) => { var ent = createEntity(name); ent.transform.position = pos; ent.addComponent(new Sprite(blockTexture)); var collider = ent.colliders.add(new BoxCollider()); // add a glow sprite on the light render layer var glowSprite = new Sprite(blockGlowTexture); glowSprite.renderLayer = LIGHT_RENDER_LAYER; ent.addComponent(glowSprite); if (isTrigger) { collider.isTrigger = true; ent.addComponent(new TriggerListener()); } }; boxMaker(new Vector2(0, 100), "moon1", false); boxMaker(new Vector2(150, 100), "moon11", false); boxMaker(new Vector2(300, 100), "moon12", false); boxMaker(new Vector2(450, 100), "moon13", false); boxMaker(new Vector2(600, 100), "moon14", false); boxMaker(new Vector2(50, 500), "moon3", true); boxMaker(new Vector2(500, 250), "moon4", false); var moonEnt = createEntity("moon"); moonEnt.addComponent(new Sprite(moonTexture)); moonEnt.transform.position = new Vector2(100, 0); moonEnt = createEntity("moon2"); moonEnt.addComponent(new Sprite(moonTexture)); moonEnt.transform.position = new Vector2(-500, 0); var lightEnt = createEntity("sprite-light"); lightEnt.addComponent(new Sprite(lightTexture)); lightEnt.transform.position = new Vector2(-700, 0); lightEnt.transform.scale = new Vector2(4); lightEnt.getComponent <Sprite>().renderLayer = LIGHT_RENDER_LAYER; // add an animation to "moon4" findEntity("moon4").addComponent(new MovingPlatform(250, 400)); // create a player moon var entity = createEntity("player-block"); entity.transform.position = new Vector2(220, 220); var sprite = new Sprite(blockTexture); sprite.renderLayer = LIGHT_RENDER_LAYER; entity.addComponent(sprite); entity.addComponent(new SimpleMover()); entity.colliders.add(new BoxCollider()); // add a follow camera camera.entity.addComponent(new FollowCamera(entity)); camera.entity.addComponent(new CameraShake()); // setup some lights and animate the colors var pointLight = new Nez.Shadows.PointLight(600, Color.Red); pointLight.renderLayer = LIGHT_RENDER_LAYER; pointLight.power = 1f; var light = createEntity("light"); light.transform.position = new Vector2(650f, 300f); light.addComponent(pointLight); PropertyTweens.colorPropertyTo(pointLight, "color", new Color(0, 0, 255, 255), 1f) .setEaseType(EaseType.Linear) .setLoops(LoopType.PingPong, 100) .start(); PropertyTweens.floatPropertyTo(pointLight, "power", 0.1f, 1f) .setEaseType(EaseType.Linear) .setLoops(LoopType.PingPong, 100) .start(); pointLight = new Nez.Shadows.PointLight(500, Color.Yellow); pointLight.renderLayer = LIGHT_RENDER_LAYER; light = createEntity("light-two"); light.transform.position = new Vector2(-50f); light.addComponent(pointLight); PropertyTweens.colorPropertyTo(pointLight, "color", new Color(0, 255, 0, 255), 1f) .setEaseType(EaseType.Linear) .setLoops(LoopType.PingPong, 100) .start(); pointLight = new Nez.Shadows.PointLight(500, Color.AliceBlue); pointLight.renderLayer = LIGHT_RENDER_LAYER; light = createEntity("light-three"); light.transform.position = new Vector2(100f); light.addComponent(pointLight); }
public override void Initialize() { base.Initialize(); Screen.SetSize(1280, 720); // render layer for all lights and any emissive Sprites var lightRenderLayer = 5; ClearColor = Color.White; // create a Renderer that renders all but the light layer and screen space layer AddRenderer(new RenderLayerExcludeRenderer(0, lightRenderLayer, ScreenSpaceRenderLayer)); // create a Renderer that renders only the light layer into a render target var lightRenderer = AddRenderer(new RenderLayerRenderer(-1, lightRenderLayer)); lightRenderer.RenderTargetClearColor = new Color(10, 10, 10, 255); lightRenderer.RenderTexture = new RenderTexture(); // add a PostProcessor that renders the light render target and blurs it AddPostProcessor(new PolyLightPostProcessor(0, lightRenderer.RenderTexture)) .SetEnableBlur(true) .SetBlurAmount(0.5f); var lightTexture = Content.LoadTexture(Nez.Content.Shadows.Spritelight); var moonTexture = Content.LoadTexture(Nez.Content.Shared.Moon); var blockTexture = Content.LoadTexture(Nez.Content.Shadows.Block); var blockGlowTexture = Content.LoadTexture(Nez.Content.Shadows.BlockGlow); // create some boxes Action <Vector2, string, bool> boxMaker = (Vector2 pos, string name, bool isTrigger) => { var ent = CreateEntity(name); ent.Position = pos; ent.AddComponent(new SpriteRenderer(blockTexture)); var collider = ent.AddComponent <BoxCollider>(); // add a glow sprite on the light render layer var glowSprite = new SpriteRenderer(blockGlowTexture); glowSprite.RenderLayer = lightRenderLayer; ent.AddComponent(glowSprite); if (isTrigger) { collider.IsTrigger = true; ent.AddComponent(new TriggerListener()); } }; boxMaker(new Vector2(0, 100), "box0", false); boxMaker(new Vector2(150, 100), "box1", false); boxMaker(new Vector2(300, 100), "box2", false); boxMaker(new Vector2(450, 100), "box3", false); boxMaker(new Vector2(600, 100), "box4", false); boxMaker(new Vector2(50, 500), "box5", true); boxMaker(new Vector2(500, 250), "box6", false); var moonEnt = CreateEntity("moon"); moonEnt.AddComponent(new SpriteRenderer(moonTexture)); moonEnt.Position = new Vector2(100, 0); moonEnt = CreateEntity("moon2"); moonEnt.AddComponent(new SpriteRenderer(moonTexture)); moonEnt.Position = new Vector2(-500, 0); var lightEnt = CreateEntity("sprite-light"); lightEnt.AddComponent(new SpriteRenderer(lightTexture)); lightEnt.Position = new Vector2(-700, 0); lightEnt.Scale = new Vector2(4); lightEnt.GetComponent <SpriteRenderer>().RenderLayer = lightRenderLayer; // add an animation to "box4" FindEntity("box4").AddComponent(new MovingPlatform(250, 400)); // create a player block var entity = CreateEntity("player-block"); entity.SetPosition(new Vector2(220, 220)) .AddComponent(new SpriteRenderer(blockTexture).SetRenderLayer(lightRenderLayer)) .AddComponent(new SimpleMover()) .AddComponent <BoxCollider>(); // add a follow camera Camera.Entity.AddComponent(new FollowCamera(entity)); Camera.Entity.AddComponent(new CameraShake()); // setup some lights and animate the colors var pointLight = new PolyLight(600, Color.Red); pointLight.RenderLayer = lightRenderLayer; pointLight.Power = 1f; var light = CreateEntity("light"); light.SetPosition(new Vector2(700f, 300f)) .AddComponent(pointLight); pointLight.TweenColorTo(new Color(0, 0, 255, 255), 1f) .SetEaseType(EaseType.Linear) .SetLoops(LoopType.PingPong, 100) .Start(); PropertyTweens.FloatPropertyTo(pointLight, "Power", 0.1f, 1f) .SetEaseType(EaseType.Linear) .SetLoops(LoopType.PingPong, 100) .Start(); pointLight = new PolyLight(500, Color.Yellow); pointLight.RenderLayer = lightRenderLayer; light = CreateEntity("light-two"); light.Position = new Vector2(-50f); light.AddComponent(pointLight); pointLight.TweenColorTo(new Color(0, 255, 0, 255), 1f) .SetEaseType(EaseType.Linear) .SetLoops(LoopType.PingPong, 100) .Start(); pointLight = new PolyLight(500, Color.AliceBlue); pointLight.RenderLayer = lightRenderLayer; light = CreateEntity("light-three"); light.Position = new Vector2(100, 250); light.AddComponent(pointLight); pointLight.TweenColorTo(new Color(200, 100, 155, 255), 1f) .SetEaseType(EaseType.QuadIn) .SetLoops(LoopType.PingPong, 100) .Start(); }
void OnGUI() { DemoGUIHelpers.setupGUIButtons(); if (_springTween == null) { _duration = DemoGUIHelpers.durationSlider(_duration); if (GUILayout.Button("Custom Property Tween (wackyDoodleWidth)")) { PropertyTweens.floatPropertyTo(this, "wackyDoodleWidth", 6f, _duration) .setFrom(1f) .setLoops(LoopType.PingPong) .start(); } if (GUILayout.Button("Position via Property Tween")) { PropertyTweens.vector3PropertyTo(cube, "position", new Vector3(5f, 5f, 5f), _duration) .setLoops(LoopType.PingPong) .start(); } if (GUILayout.Button("Tween Party (color, position, scale and rotation)")) { var party = new TweenParty(_duration); party.addTween(cube.GetComponent <Renderer>().material.ZKcolorTo(Color.black)) .addTween(cube.ZKpositionTo(new Vector3(7f, 4f))) .addTween(cube.ZKlocalScaleTo(new Vector3(1f, 4f))) .addTween(cube.ZKrotationTo(Quaternion.AngleAxis(180f, Vector3.one))) .setLoops(LoopType.PingPong) .start(); } if (GUILayout.Button("Tween Chain (same props as the party)")) { var chain = new TweenChain(); chain.appendTween(cube.GetComponent <Renderer>().material.ZKcolorTo(Color.black, _duration).setLoops(LoopType.PingPong)) .appendTween(cube.ZKpositionTo(new Vector3(7f, 4f), _duration).setLoops(LoopType.PingPong)) .appendTween(cube.ZKlocalScaleTo(new Vector3(1f, 4f), _duration).setLoops(LoopType.PingPong)) .appendTween(cube.ZKrotationTo(Quaternion.AngleAxis(180f, Vector3.one), _duration).setLoops(LoopType.PingPong)) .start(); } if (GUILayout.Button("Chaining Tweens Directly (same props as the party)")) { cube.GetComponent <Renderer>().material.ZKcolorTo(Color.black, _duration).setLoops(LoopType.PingPong) .setNextTween ( cube.ZKpositionTo(new Vector3(7f, 4f), _duration).setLoops(LoopType.PingPong).setNextTween ( cube.ZKlocalScaleTo(new Vector3(1f, 4f), _duration).setLoops(LoopType.PingPong).setNextTween ( cube.ZKrotationTo(Quaternion.AngleAxis(180f, Vector3.one), _duration).setLoops(LoopType.PingPong) ) ) ) .start(); } GUILayout.Space(10); if (GUILayout.Button("Start Spring Position")) { _springTween = new TransformSpringTween(cube, TransformTargetType.Position, cube.position); } if (GUILayout.Button("Start Spring Position (overdamped)")) { _springTween = new TransformSpringTween(cube, TransformTargetType.Position, cube.position); _springTween.dampingRatio = 1.5f; _springTween.angularFrequency = 20f; } if (GUILayout.Button("Start Spring Scale")) { _springTween = new TransformSpringTween(cube, TransformTargetType.LocalScale, cube.localScale); } GUILayout.Space(10); if (GUILayout.Button("Run Action Every 1s After 2s Delay")) { ActionTask.every(2f, 1f, this, task => { // by using the context we get away with not allocating when passing this Action around! (task.context as ZestKitOtherGoodies).methodCalledForDemonstrationPurposes(); }); } if (GUILayout.Button("ActionTask Interoperability")) { Debug.Log("The Story: An ActionTask with a 2s delay will be created with a continueWith ActionTask appended to it that will tick every 0.3s for 2s. The original ActionTask will have a waitFor called that is an ActionTask with a 1s delay. Follow?"); Debug.Log("--- current time: " + Time.time); ActionTask.afterDelay(2f, this, task => { Debug.Log("--- root task ticked: " + Time.time); }).continueWith ( ActionTask.create(this, task => { Debug.Log("+++ continueWith task elapsed time: " + task.elapsedTime); if (task.elapsedTime > 2f) { task.stop(); } }) .setDelay(1f) .setRepeats(0.3f) ).waitFor ( ActionTask.afterDelay(1f, this, task => { Debug.Log("--- waitFor ticked: " + Time.time); }) ); } DemoGUIHelpers.easeTypesGUI(); } else { GUILayout.Label("While the spring tween is active the cube will spring to\n" + "whichever location you click or scale x/y to that location\n" + "if you chose a scale spring. The sliders below let you tweak\n" + "the spring contants.\n\n" + "For the scale tween, try clicking places on a horizontal or vertical\n" + "axis to get a feel for how it works."); springSliders(); var prefix = _springTween.targetType == TransformTargetType.Position ? "Spring position to:" : "Spring scale to:"; var mousePosWorld = Camera.main.ScreenToWorldPoint(Input.mousePosition); var labelText = string.Format("{0}\nx: {1:F1}\ny: {2:F1}", prefix, mousePosWorld.x, mousePosWorld.y); GUI.Label(new Rect(Input.mousePosition.x, Screen.height - Input.mousePosition.y - 50f, 130f, 50f), labelText); if (GUILayout.Button("Stop Spring")) { _springTween.stop(); _springTween = null; cube.position = new Vector3(-1f, -2f); cube.localScale = Vector3.one; } } }
public static ITween <System.Numerics.Vector2> Tween(this object self, string memberName, System.Numerics.Vector2 to, float duration) { return(PropertyTweens.Vector2PropertyTo(self, memberName, to, duration)); }