46 lines
1.7 KiB
C#
46 lines
1.7 KiB
C#
using Cielonos.MainGame.Characters;
|
|
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 * attackArea.creator.selfTimeSm.DeltaTime);
|
|
//speed = Mathf.Max(0, speed);
|
|
|
|
if ((disableNegative && speed < 0) || !canMove)
|
|
{
|
|
speed = 0;
|
|
}
|
|
|
|
float projectileSpeedMultiplier = attackArea.creator.attributeSm[CharacterAttribute.ProjectileSpeedMultiplier];
|
|
|
|
unscaledVelocity = direction * (speed * projectileSpeedMultiplier);
|
|
scaledVelocity = unscaledVelocity * timeScaleCoefficient;
|
|
attackArea.topParent.transform.position += scaledVelocity * attackArea.creator.selfTimeSm.DeltaTime;
|
|
}
|
|
}
|
|
} |