/// <summary> /// déclanche l'animation d'attaque. /// </summary> public virtual void Attack() { if (_isAttacking || _lastAttackTime + _cooldown > Time.time) { return; } Debug.Log("LastAttack : " + _lastAttackTime); foreach (var colli in _colliders) { colli.enabled = true; } TransformVector init = new TransformVector(transform.position, transform.rotation); TransformVector dest = new TransformVector(_normalTarget.position, _normalTarget.rotation); _transformCurve = new TransformCurve(init, Time.time, dest.Sub(init).Mult(-1).Sub(_transformCurve.GetSpeed(Time.time)), dest, Time.time + _timeAttack, dest.Sub(init).Mult(10), false); _isAttacking = true; TempCible = Instantiate(_normalTarget.gameObject); TempCible.transform.position = _normalTarget.position; TempCible.transform.rotation = _normalTarget.rotation; TempCible.GetComponentInChildren <SpriteRenderer>().color = CibleColor; TempCible.transform.SetParent(null, true); Destroy(TempCible, _timeAttack); }
public TransformVector GetSpeed(float time) { TransformVector precVect = GetTransform(Time.deltaTime); TransformVector vect = GetTransform(time); return(vect.Sub(precVect)); }
public TransformVector GetTransform(float time) { TransformVector trans = new TransformVector( new Vector3(_posX.Evaluate(time), _posY.Evaluate(time), _posZ.Evaluate(time)), new Quaternion(_rotX.Evaluate(time), _rotY.Evaluate(time), _rotZ.Evaluate(time), _rotW.Evaluate(time))); return(trans); }
// Use this for initialization protected virtual void Start() { _AudioSource = GetComponent<AudioSource>(); _colliders = GetComponentsInChildren<Collider>(); _zeroTransformVector = new TransformVector(); _initialTransformVector = new TransformVector(transform.localPosition,transform.localRotation); _transformCurve = new TransformCurve(_initialTransformVector, Time.time, _zeroTransformVector, _initialTransformVector, Time.time, _zeroTransformVector); BugManager = FindObjectOfType<BugManager>(); }
// Use this for initialization protected virtual void Start() { _AudioSource = GetComponent <AudioSource>(); _colliders = GetComponentsInChildren <Collider>(); _zeroTransformVector = new TransformVector(); _initialTransformVector = new TransformVector(transform.localPosition, transform.localRotation); _transformCurve = new TransformCurve(_initialTransformVector, Time.time, _zeroTransformVector, _initialTransformVector, Time.time, _zeroTransformVector); BugManager = FindObjectOfType <BugManager>(); }
public TransformCurve(TransformVector initialTransform, float initialTime, TransformVector outTangent, TransformVector destinationTransform, float destinationTime, TransformVector inTangent, bool isLocal = true) { _isLocal = isLocal; Keyframe initPosXKey = new Keyframe(initialTime, initialTransform.Position.x, 0, outTangent.Position.x); Keyframe initPosYKey = new Keyframe(initialTime, initialTransform.Position.y, 0, outTangent.Position.y); Keyframe initPosZKey = new Keyframe(initialTime, initialTransform.Position.z, 0, outTangent.Position.z); Keyframe destPosXKey = new Keyframe(destinationTime, destinationTransform.Position.x, inTangent.Position.x, 0); Keyframe destPosYKey = new Keyframe(destinationTime, destinationTransform.Position.y, inTangent.Position.y, 0); Keyframe destPosZKey = new Keyframe(destinationTime, destinationTransform.Position.z, inTangent.Position.z, 0); _posX = new AnimationCurve(); _posY = new AnimationCurve(); _posZ = new AnimationCurve(); _posX.AddKey(initPosXKey); _posX.AddKey(destPosXKey); _posY.AddKey(initPosYKey); _posY.AddKey(destPosYKey); _posZ.AddKey(initPosZKey); _posZ.AddKey(destPosZKey); Keyframe initRotXKey = new Keyframe(initialTime, initialTransform.Rotation.x, 0, outTangent.Rotation.x); Keyframe initRotYKey = new Keyframe(initialTime, initialTransform.Rotation.y, 0, outTangent.Rotation.y); Keyframe initRotZKey = new Keyframe(initialTime, initialTransform.Rotation.z, 0, outTangent.Rotation.z); Keyframe initRotWKey = new Keyframe(initialTime, initialTransform.Rotation.w, 0, outTangent.Rotation.w); Keyframe destRotXKey = new Keyframe(destinationTime, destinationTransform.Rotation.x, inTangent.Rotation.x, 0); Keyframe destRotYKey = new Keyframe(destinationTime, destinationTransform.Rotation.y, inTangent.Rotation.y, 0); Keyframe destRotZKey = new Keyframe(destinationTime, destinationTransform.Rotation.z, inTangent.Rotation.z, 0); Keyframe destRotWKey = new Keyframe(destinationTime, destinationTransform.Rotation.w, inTangent.Rotation.w, 0); _rotX = new AnimationCurve(); _rotY = new AnimationCurve(); _rotZ = new AnimationCurve(); _rotW = new AnimationCurve(); _rotX.AddKey(initRotXKey); _rotX.AddKey(destRotXKey); _rotY.AddKey(initRotYKey); _rotY.AddKey(destRotYKey); _rotZ.AddKey(initRotZKey); _rotZ.AddKey(destRotZKey); _rotW.AddKey(initRotWKey); _rotW.AddKey(destRotWKey); }
/// <summary> /// déclanche l'animation d'attaque. /// </summary> public virtual void Attack() { if (_isAttacking || _lastAttackTime + _cooldown >Time.time) return; Debug.Log("LastAttack : " + _lastAttackTime); foreach (var colli in _colliders) { colli.enabled = true; } TransformVector init = new TransformVector(transform.position,transform.rotation); TransformVector dest = new TransformVector(_normalTarget.position, _normalTarget.rotation); _transformCurve = new TransformCurve(init, Time.time, dest.Sub(init).Mult(-1).Sub(_transformCurve.GetSpeed(Time.time)), dest, Time.time + _timeAttack, dest.Sub(init).Mult(10),false); _isAttacking = true; TempCible = Instantiate(_normalTarget.gameObject); TempCible.transform.position = _normalTarget.position; TempCible.transform.rotation = _normalTarget.rotation; TempCible.GetComponentInChildren<SpriteRenderer>().color = CibleColor; TempCible.transform.SetParent(null,true); Destroy(TempCible,_timeAttack); }
private Drawable transformVectorTo(Vector2 startValue, Vector2 newValue, double duration, EasingTypes easing, TransformVector transform) { Type type = transform.GetType(); if (transformationDelay == 0) { Transforms.RemoveAll(t => t.GetType() == type); if (startValue == newValue) { return(this); } } else { startValue = (Transforms.FindLast(t => t.GetType() == type) as TransformVector)?.EndValue ?? startValue; } double startTime = Time + transformationDelay; transform.StartTime = startTime; transform.EndTime = startTime + duration; transform.StartValue = startValue; transform.EndValue = newValue; transform.Easing = easing; if (duration == 0) { transform.Apply(this); } else { Transforms.Add(transform); } return(this); }
protected void TransformVectorTo(Vector2 startValue, Vector2 newValue, double duration, EasingTypes easing, TransformVector transform) { Type type = transform.GetType(); if (transformationDelay == 0) { Transforms.RemoveAll(t => t.GetType() == type); if (startValue == newValue) { return; } } else { startValue = (Transforms.FindLast(t => t.GetType() == type) as TransformVector)?.EndValue ?? startValue; } double startTime = Clock != null ? (Time.Current + transformationDelay) : 0; transform.StartTime = startTime; transform.EndTime = startTime + duration; transform.StartValue = startValue; transform.EndValue = newValue; transform.Easing = easing; if (Clock == null) { transform.UpdateTime(new FrameTimeInfo { Current = transform.EndTime }); transform.Apply(this); } else if (duration == 0 && transformationDelay == 0) { transform.UpdateTime(Time); transform.Apply(this); } else { Transforms.Add(transform); } }
public TransformVector Sub(TransformVector transformVector) { return new TransformVector(Position - transformVector.Position, Rotation * Quaternion.Inverse(transformVector.Rotation)); }
public TransformVector Add(TransformVector transformVector) { return new TransformVector(Position + transformVector.Position, Rotation * transformVector.Rotation); }
public TransformVector GetTransform(float time) { TransformVector trans = new TransformVector( new Vector3(_posX.Evaluate(time), _posY.Evaluate(time), _posZ.Evaluate(time)), new Quaternion(_rotX.Evaluate(time), _rotY.Evaluate(time), _rotZ.Evaluate(time), _rotW.Evaluate(time))); return trans; }
public TransformCurve(TransformVector initialTransform, float initialTime, TransformVector outTangent, TransformVector destinationTransform, float destinationTime, TransformVector inTangent,bool isLocal = true) { _isLocal = isLocal; Keyframe initPosXKey = new Keyframe(initialTime, initialTransform.Position.x, 0, outTangent.Position.x); Keyframe initPosYKey = new Keyframe(initialTime, initialTransform.Position.y, 0, outTangent.Position.y); Keyframe initPosZKey = new Keyframe(initialTime, initialTransform.Position.z, 0, outTangent.Position.z); Keyframe destPosXKey = new Keyframe(destinationTime, destinationTransform.Position.x, inTangent.Position.x, 0); Keyframe destPosYKey = new Keyframe(destinationTime, destinationTransform.Position.y, inTangent.Position.y, 0); Keyframe destPosZKey = new Keyframe(destinationTime, destinationTransform.Position.z, inTangent.Position.z, 0); _posX = new AnimationCurve(); _posY = new AnimationCurve(); _posZ = new AnimationCurve(); _posX.AddKey(initPosXKey); _posX.AddKey(destPosXKey); _posY.AddKey(initPosYKey); _posY.AddKey(destPosYKey); _posZ.AddKey(initPosZKey); _posZ.AddKey(destPosZKey); Keyframe initRotXKey = new Keyframe(initialTime, initialTransform.Rotation.x, 0, outTangent.Rotation.x); Keyframe initRotYKey = new Keyframe(initialTime, initialTransform.Rotation.y, 0, outTangent.Rotation.y); Keyframe initRotZKey = new Keyframe(initialTime, initialTransform.Rotation.z, 0, outTangent.Rotation.z); Keyframe initRotWKey = new Keyframe(initialTime, initialTransform.Rotation.w, 0, outTangent.Rotation.w); Keyframe destRotXKey = new Keyframe(destinationTime, destinationTransform.Rotation.x, inTangent.Rotation.x, 0); Keyframe destRotYKey = new Keyframe(destinationTime, destinationTransform.Rotation.y, inTangent.Rotation.y, 0); Keyframe destRotZKey = new Keyframe(destinationTime, destinationTransform.Rotation.z, inTangent.Rotation.z, 0); Keyframe destRotWKey = new Keyframe(destinationTime, destinationTransform.Rotation.w, inTangent.Rotation.w, 0); _rotX = new AnimationCurve(); _rotY = new AnimationCurve(); _rotZ = new AnimationCurve(); _rotW = new AnimationCurve(); _rotX.AddKey(initRotXKey); _rotX.AddKey(destRotXKey); _rotY.AddKey(initRotYKey); _rotY.AddKey(destRotYKey); _rotZ.AddKey(initRotZKey); _rotZ.AddKey(destRotZKey); _rotW.AddKey(initRotWKey); _rotW.AddKey(destRotWKey); }
public TransformVector Sub(TransformVector transformVector) { return(new TransformVector(Position - transformVector.Position, Rotation * Quaternion.Inverse(transformVector.Rotation))); }
public TransformVector Add(TransformVector transformVector) { return(new TransformVector(Position + transformVector.Position, Rotation * transformVector.Rotation)); }