using UnityEngine; namespace Cielonos.MainGame { public class LinearDirectionMoveSubmodule : MoveSubmoduleBase { public Vector3 direction; public float speed; public float acceleration; public bool disableNegative; public LinearDirectionMoveSubmodule(AttackAreaBase attackArea, Vector3 direction, float speed, float acceleration, bool overrideRotation, bool disableNegative, bool stopWhenHit, float timeScaleCoefficient) : base(attackArea, stopWhenHit, timeScaleCoefficient) { this.direction = direction; this.speed = speed; this.acceleration = acceleration; this.disableNegative = disableNegative; this.timeScaleCoefficient = timeScaleCoefficient; if (overrideRotation) { attackArea.topParent.transform.rotation = Quaternion.LookRotation(direction); } } public override void Update() { speed += acceleration * (timeScaleCoefficient * Time.deltaTime); //attackArea.creator.selfTimeModule.EntityDeltaTime); speed = Mathf.Max(0, speed); if ((disableNegative && speed < 0) || !canMove) { speed = 0; } unscaledVelocity = direction * speed; scaledVelocity = unscaledVelocity * timeScaleCoefficient; //attackArea.creator.selfTimeModule.EntityDeltaTime); attackArea.topParent.transform.position += scaledVelocity * Time.deltaTime; } } }