new actions: ActionFadeBy.cs ActionTintTo.csmaster
@@ -15,27 +15,30 @@ See the examples folder, there's a sample script there. | |||
You can also subclass the Actor and add all the actions you want to the Start() method. | |||
### Included actions (ready and WIP) | |||
### Included actions (ready and WIP) | |||
All actions are designed to word in 3D scene (i.e. using Vector3 for movement, rotation and scaling). | |||
You can use it in 2D with apropriate vectors, but i'm going to add support for 2D actions soon. | |||
Base actions | |||
- [x] Sequence | |||
- [x] Parallel | |||
- [x] Repeat and Loop *implemented in one action* | |||
- [ ] Reverse | |||
- [ ] Reverse *not yet, but every reversable action has working reverse() method* | |||
Interval actions | |||
- [x] Delay and RandomDelay *implemented in one action* | |||
- [x] MoveTo | |||
- [x] MoveBy | |||
- [x] RotateTo | |||
- [x] RotateBy | |||
- [x] ScaleTo | |||
- [x] ScaleBy | |||
- [x] TintBy | |||
- [x] Delay and RandomDelay *implemented in one action* | |||
- [ ] TintTo | |||
- [ ] FadeOut | |||
- [ ] FadeIn | |||
- [ ] FadeTo | |||
- [x] TintBy *if you want to manipulate alpha, your material must support transparency* | |||
- [x] TintTo *if you want to manipulate alpha, your material must support transparency* | |||
- [ ] FadeOut *if you want to manipulate alpha, your material must support transparency* | |||
- [ ] FadeIn *if you want to manipulate alpha, your material must support transparency* | |||
- [ ] FadeTo *if you want to manipulate alpha, your material must support transparency* | |||
- [x] FadeBy *if you want to manipulate alpha, your material must support transparency* | |||
- [ ] JumpTo | |||
- [ ] JumpBy | |||
- [ ] Bezier | |||
@@ -0,0 +1,37 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using UnityEngine; | |||
class ActionFadeBy : ActionInterval | |||
{ | |||
public float delta; | |||
public ActionFadeBy(float tgtDelta, float tgtDuration) | |||
: base(tgtDuration) | |||
{ | |||
delta = tgtDelta; | |||
} | |||
public override Action clone() | |||
{ | |||
return new ActionFadeBy(delta, duration); | |||
} | |||
public override Action reverse() | |||
{ | |||
return new ActionFadeBy(-delta, duration); | |||
} | |||
public override void start() | |||
{ | |||
base.start(); | |||
} | |||
public override void stepInterval(float dt) | |||
{ | |||
float d = dt / duration; | |||
Color tgtColor = target.gameObject.renderer.material.color; | |||
tgtColor[3] += delta * d; | |||
target.gameObject.renderer.material.color = tgtColor; | |||
} | |||
} |
@@ -13,6 +13,11 @@ class ActionTintBy : ActionInterval | |||
color = tgtColor * coeff; | |||
} | |||
public ActionTintBy(Vector3 tgtColor, float tgtDuration) | |||
: this(new Vector4(tgtColor.x, tgtColor.y, tgtColor.z), tgtDuration) | |||
{ | |||
} | |||
public override Action clone() | |||
{ | |||
return new ActionTintBy(color / coeff, duration); | |||
@@ -0,0 +1,49 @@ | |||
using System; | |||
using System.Collections.Generic; | |||
using UnityEngine; | |||
class ActionTintTo : ActionInterval | |||
{ | |||
public Vector4 color; | |||
public Vector4 path; | |||
protected const float coeff = 1F / 255F; | |||
public ActionTintTo(Vector4 tgtColor, float tgtDuration) | |||
: base(tgtDuration) | |||
{ | |||
color = tgtColor * coeff; | |||
path = Vector4.zero; | |||
} | |||
public ActionTintTo(Vector3 tgtColor, float tgtDuration) | |||
: this(new Vector4(tgtColor.x, tgtColor.y, tgtColor.z), tgtDuration) | |||
{ | |||
} | |||
public override Action clone() | |||
{ | |||
return new ActionTintTo(color / coeff, duration); | |||
} | |||
public override void start() | |||
{ | |||
base.start(); | |||
Color tgtColor = target.gameObject.renderer.material.color; | |||
path[0] = color[0] - tgtColor[0]; | |||
path[1] = color[1] - tgtColor[1]; | |||
path[2] = color[2] - tgtColor[2]; | |||
path[3] = color[3] - tgtColor[3]; | |||
} | |||
public override void stepInterval(float dt) | |||
{ | |||
float d = dt / duration; | |||
Vector4 tgt = path * d; | |||
Color tgtColor = target.gameObject.renderer.material.color; | |||
tgtColor[0] += tgt[0]; | |||
tgtColor[1] += tgt[1]; | |||
tgtColor[2] += tgt[2]; | |||
tgtColor[3] += tgt[3]; | |||
target.gameObject.renderer.material.color = tgtColor; | |||
} | |||
} |
@@ -7,14 +7,16 @@ public class SampleActions : MonoBehaviour | |||
{ | |||
Action seq = new ActionRepeat (new ActionSequence(new Action[] | |||
{ | |||
new ActionTintBy(new Vector4(-50,50,-50,-50),1), | |||
new ActionParallel(new Action[] { | |||
new ActionMoveBy(new Vector3(10, 0, 0), 1), | |||
new ActionMoveBy(new Vector3(0, 10, 0), 1), | |||
// new ActionRotateBy(new Vector3(90, 0, 0), 1) | |||
new ActionRotateBy(new Vector3(90, 0, 0), 1), | |||
new ActionTintBy(new Vector4(-50, 50, -150, 0), 1) | |||
}), | |||
new ActionScaleBy(new Vector3(2, 2, 1), 1), | |||
new ActionScaleBy(new Vector3(0.5F, 0.5F, 2), 1), | |||
new ActionFadeBy(-1F, 2), | |||
new ActionFadeBy(1F, 2), | |||
new ActionDelay(1), | |||
new ActionRepeat(new ActionSequence(new Action[] { | |||
new ActionHide(), | |||
@@ -28,7 +30,7 @@ public class SampleActions : MonoBehaviour | |||
new ActionMoveTo(new Vector3(0, 0, 10), 1), | |||
new ActionScaleTo(new Vector3(2, 2, 2), 1), | |||
new ActionRotateTo(new Vector3(0, 0, 0), 1), | |||
new ActionTintBy(new Vector4(50,-50,50,50),3) | |||
new ActionTintTo(new Vector4(67, 105, 181, 255),3) | |||
}), 5); | |||
gameObject.SendMessage("AttachAction", seq); | |||
} | |||