Терабайт исходников
Регистрация: 05.07.2007
Сообщений: 5,196
Написано 1,721 полезных сообщений (для 5,374 пользователей)
|
Ответ: Вызов гуя, есть проблемы.
Сообщение от pax
Челендж я принял, но это первый и последний черелндж) Видео с готовым хелсбаром в аттаче. Управляется тем же скриптом, что я приводил выше. Вероятнее всего кодом данная штука будет работать чуть быстрее, но не уверен, но настройка цвета кодом конечно удобнее. Можно заморочиться и написать скрипт, применяющий к спрайту цвет на основе двух параметров и анимировать эти два параметра вместо цвета и прозрачности, тогда можно будет задавать цвет снаружи. А сейчас цвет баров зашит в анимациях.
В результате получилось 4 анимации (анимация движения линии вверх-вниз, анимация прозрачности, анимация для перемещения квадратиков и собственно анимация состояния хэлсбара). Анимация прозрачности используется как на линиях, так и на квадратиках. Пришлось для каждой линии сделать копию контроллера анимации и настроить немного по разному скорости воспроизведения анимаций, чтобы получилось так же как у тебя. Тоже самое сделал для квадратиков. Анимация состояния хэлсбара управляет цветом линий и квадратиков (без прозрачности), а так же их масштабом. Плюс она двигает спрайты "скобок".
|
Моё почтение! Довольно близко к оригиналу, потратить на это ещё
столько же времени, и думаю будет один в один. Челлендж выполнен
быстрее, чем я расчитывал! Лично мне ты всё доказал с анимациями.
Только я думал анимаций меньше будет использоваться )
Немного шлифануть, чуть докодить, и это сэкономило бы
мне много строк кода.
А теперь внимание, барабанная дробь, и на экране
появляются магические числа без комментариев:
public class KrestAnimation : MonoBehaviour
{
public Transform Krest;
public Transform RKrest;
public Transform LKrest;
public Transform HPLine1;
public Transform HPLine2;
public Transform HPLine3;
public Transform HPLine4;
public Transform HPLine5;
public Transform Begunok1;
public Transform Begunok2;
public Transform B2ML;
public Transform B2MR;
public Transform B1ML;
public Transform B1MR;
public Vector3 V100HPLine1 = new Vector3(2f, 0.03f, 1f);
public Vector3 V100HPLine2 = new Vector3(2f, 0.01f, 1f);
public Vector3 V100HPLine3 = new Vector3(2f, 0.05f, 1f);
public Vector3 V100HPLine4 = new Vector3(2f, 0.005f, 1f);
public Vector3 V100HPLine5 = new Vector3(2f, 0.02f, 1f);
public Color Ucolor;
public float Timer = 0.1f;
private int L1Sost = 0;
private float L1Stady = 0;
private float L1Dist;
private int L2Sost = 0;
private float L2Stady = 0;
private float L2Dist;
private int L3Sost = 0;
private float L3Stady = 0;
private float L3Dist;
private int L4Sost = 0;
private float L4Stady = 0;
private float L4Dist;
private int L5Sost = 0;
private float L5Stady = 0;
private float L5Dist;
public int B1Sost = 0;
public float B1Stady = 0f;
public int B2Sost = 0;
public float B2Stady = 0f;
public float MAXHP = 1000f;
public float HP = 1000f;
public float HPlast = 1000f;
public float HPProcent = 0f;
public int KrestAktivator = 0;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
Timer = Timer - 0.1f * Time.time;
if (Timer <= 0f)
{
// Управление размерами и цветом HPLine
if (HP != HPlast)
{
if (HP < 1f && KrestAktivator == 0)
{
RKrest.gameObject.SetActive(false);
LKrest.gameObject.SetActive(false);
Krest.gameObject.SetActive(true);
KrestAktivator = 1;
}
if (HP > 0f && KrestAktivator == 1)
{
Krest.gameObject.SetActive(false);
RKrest.gameObject.SetActive(true);
LKrest.gameObject.SetActive(true);
KrestAktivator = 0;
}
if (HP < HPlast || HP > HPlast)
{
HPProcent = HP * 100f / MAXHP;
HPProcent = HPProcent / 100f;
HPLine1.transform.localScale = new Vector3(2f * HPProcent, 0.03f, 1f);
HPLine2.transform.localScale = new Vector3(2f * HPProcent, 0.01f, 1f);
HPLine3.transform.localScale = new Vector3(2f * HPProcent, 0.05f, 1f);
HPLine4.transform.localScale = new Vector3(2f * HPProcent, 0.005f, 1f);
HPLine5.transform.localScale = new Vector3(2f * HPProcent, 0.02f, 1f);
RKrest.transform.localPosition = new Vector3(-1f * HPProcent, 0f, 0f);
LKrest.transform.localPosition = new Vector3(1f * HPProcent, 0f, 0f);
if (((HP * 100f) / MAXHP > 79f) && ((HP * 100f) / MAXHP) < 101f)
{
Ucolor = (HPLine4.GetComponent<Renderer>().material.color);
Ucolor.r = 1f;
Ucolor.g = 1f;
Ucolor.b = 1f;
(HPLine4.GetComponent<Renderer>().material.color) = Ucolor;
HPProcent = 20f - (100f - ((HP * 100f) / MAXHP));
Debug.Log("Процент Линии 4: " + HPProcent);
Ucolor = (HPLine4.GetComponent<Renderer>().material.color);
Ucolor.r = 1f;
Ucolor.g = (HPProcent * 0.05f);
Ucolor.b = (HPProcent * 0.05f);
(HPLine4.GetComponent<Renderer>().material.color) = Ucolor;
}
if (((HP * 100f) / MAXHP) < 80f)
{
Ucolor = (HPLine4.GetComponent<Renderer>().material.color);
Ucolor.r = 1f;
Ucolor.g = (0f);
Ucolor.b = (0f);
(HPLine4.GetComponent<Renderer>().material.color) = Ucolor;
}
if (((HP * 100f) / MAXHP > 59f) && ((HP * 100f) / MAXHP) < 80f)
{
Ucolor = (HPLine2.GetComponent<Renderer>().material.color);
Ucolor.r = 1f;
Ucolor.g = 1f;
Ucolor.b = 1f;
(HPLine2.GetComponent<Renderer>().material.color) = Ucolor;
HPProcent = 20f - (80f - ((HP * 100f) / MAXHP));
Debug.Log("Процент Линии 2: " + HPProcent);
Ucolor = HPLine2.GetComponent<Renderer>().material.color;
Ucolor.r = 1f;
Ucolor.g = (HPProcent * 0.05f);
Ucolor.b = (HPProcent * 0.05f);
HPLine2.GetComponent<Renderer>().material.color = Ucolor;
}
if (((HP * 100f) / MAXHP) < 60f)
{
Ucolor = (HPLine2.GetComponent<Renderer>().material.color);
Ucolor.r = 1f;
Ucolor.g = (0f);
Ucolor.b = (0f);
(HPLine2.GetComponent<Renderer>().material.color) = Ucolor;
}
if (((HP * 100f) / MAXHP) > 80f)
{
Ucolor = (HPLine2.GetComponent<Renderer>().material.color);
Ucolor.r = 1f;
Ucolor.g = 1f;
Ucolor.b = 1f;
(HPLine2.GetComponent<Renderer>().material.color) = Ucolor;
}
if (((HP * 100f) / MAXHP > 39f) && ((HP * 100f) / MAXHP) < 60f)
{
Ucolor = (HPLine5.GetComponent<Renderer>().material.color);
Ucolor.r = 1f;
Ucolor.g = 1f;
Ucolor.b = 1f;
(HPLine5.GetComponent<Renderer>().material.color) = Ucolor;
HPProcent = 20f - (60f - ((HP * 100f) / MAXHP));
Ucolor = (HPLine5.GetComponent<Renderer>().material.color);
Ucolor.r = 1f;
Ucolor.g = (HPProcent * 0.05f);
Ucolor.b = (HPProcent * 0.05f);
(HPLine5.GetComponent<Renderer>().material.color) = Ucolor;
}
if (((HP * 100f) / MAXHP) < 40f)
{
Ucolor = (HPLine5.GetComponent<Renderer>().material.color);
Ucolor.r = 1f;
Ucolor.g = (0f);
Ucolor.b = (0f);
(HPLine5.GetComponent<Renderer>().material.color) = Ucolor;
}
if (((HP * 100f) / MAXHP) > 60f)
{
Ucolor = (HPLine5.GetComponent<Renderer>().material.color);
Ucolor.r = 1f;
Ucolor.g = 1f;
Ucolor.b = 1f;
(HPLine5.GetComponent<Renderer>().material.color) = Ucolor;
}
if (((HP * 100f) / MAXHP > 19f) && ((HP * 100f) / MAXHP) < 40f)
{
Ucolor = (HPLine1.GetComponent<Renderer>().material.color);
Ucolor.r = 1f;
Ucolor.g = 1f;
Ucolor.b = 1f;
(HPLine1.GetComponent<Renderer>().material.color) = Ucolor;
HPProcent = 20f - (40f - ((HP * 100f) / MAXHP));
Ucolor = (HPLine1.GetComponent<Renderer>().material.color);
Ucolor.r = 1f;
Ucolor.g = (HPProcent * 0.05f);
Ucolor.b = (HPProcent * 0.05f);
(HPLine1.GetComponent<Renderer>().material.color) = Ucolor;
}
if (((HP * 100f) / MAXHP) < 20f)
{
Ucolor = (HPLine1.GetComponent<Renderer>().material.color);
Ucolor.r = 1f;
Ucolor.g = (0f);
Ucolor.b = (0f);
(HPLine1.GetComponent<Renderer>().material.color) = Ucolor;
}
if (((HP * 100f) / MAXHP) > 40f)
{
Ucolor = (HPLine1.GetComponent<Renderer>().material.color);
Ucolor.r = 1f;
Ucolor.g = 1f;
Ucolor.b = 1f;
(HPLine1.GetComponent<Renderer>().material.color) = Ucolor;
}
if (((HP * 100f) / MAXHP >= 0f) && ((HP * 100f) / MAXHP) < 20f)
{
Ucolor = (HPLine3.GetComponent<Renderer>().material.color);
Ucolor.r = 1f;
Ucolor.g = 1f;
Ucolor.b = 1f;
(HPLine3.GetComponent<Renderer>().material.color) = Ucolor;
HPProcent = 20f - (20f - ((HP * 100f) / MAXHP)); ;
Ucolor = (HPLine3.GetComponent<Renderer>().material.color);
Ucolor.r = 1f;
Ucolor.g = (HPProcent * 0.05f);
Ucolor.b = (HPProcent * 0.05f);
(HPLine3.GetComponent<Renderer>().material.color) = Ucolor;
}
if (((HP * 100f) / MAXHP) == 0f)
{
Ucolor = (HPLine3.GetComponent<Renderer>().material.color);
Ucolor.r = 1f;
Ucolor.g = (0f);
Ucolor.b = (0f);
(HPLine3.GetComponent<Renderer>().material.color) = Ucolor;
}
if (((HP * 100f) / MAXHP) > 20f)
{
Ucolor = (HPLine3.GetComponent<Renderer>().material.color);
Ucolor.r = 1f;
Ucolor.g = 1f;
Ucolor.b = 1f;
(HPLine3.GetComponent<Renderer>().material.color) = Ucolor;
}
HPProcent = 0f;
HPlast = HP;
}
if (HP >= MAXHP)
{
HPLine1.transform.localScale = V100HPLine1;
HPLine2.transform.localScale = V100HPLine2;
HPLine3.transform.localScale = V100HPLine3;
HPLine4.transform.localScale = V100HPLine4;
HPLine5.transform.localScale = V100HPLine5;
RKrest.transform.localPosition = new Vector3(-1f, 0f, 0f);
LKrest.transform.localPosition = new Vector3(1f, 0f, 0f);
HP = MAXHP;
HPlast = MAXHP;
}
if (HP < 0)
{
HPLine1.transform.localScale = new Vector3(0f * HPProcent, 0.03f, 1f);
HPLine2.transform.localScale = new Vector3(0f * HPProcent, 0.01f, 1f);
HPLine3.transform.localScale = new Vector3(0f * HPProcent, 0.05f, 1f);
HPLine4.transform.localScale = new Vector3(0f * HPProcent, 0.005f, 1f);
HPLine5.transform.localScale = new Vector3(0f * HPProcent, 0.02f, 1f);
RKrest.transform.localPosition = new Vector3(0f, 0f, 0f);
LKrest.transform.localPosition = new Vector3(0f, 0f, 0f);
HP = 0;
HPlast = 0;
}
}
// Конец управления размерами и цветом HPLine.
// Управление HPLine1
Ucolor = (HPLine1.GetComponent<Renderer>().material.color);
if (L1Sost == 1)
{
if (Ucolor.a > 0.99f)
{
L1Sost = 0;
Ucolor.a = 1f;
(HPLine1.GetComponent<Renderer>().material.color) = Ucolor;
}
}
if (L1Sost == 0)
{
if (Ucolor.a > 0f)
{
Ucolor.a = Ucolor.a - 0.005f;
(HPLine1.GetComponent<Renderer>().material.color) = Ucolor;
}
}
if (L1Sost == 1)
{
if (Ucolor.a < 10f)
{
Ucolor.a = Ucolor.a + 0.005f;
(HPLine1.GetComponent<Renderer>().material.color) = Ucolor;
}
}
if (Ucolor.a <= 0f && L1Sost == 0)
{
L1Sost = 1;
}
L1Dist = Vector3.Distance(HPLine1.transform.position, Krest.transform.position);
if (L1Dist > 0f && L1Stady == 2)
{
HPLine1.transform.Translate(Vector3.down * 0.001f);
L1Dist = Vector3.Distance(HPLine1.transform.position, Krest.transform.position);
if (L1Dist >= 0.18f)
{
L1Stady = 1;
}
}
if (L1Dist > 0f && L1Stady == 1)
{
HPLine1.transform.Translate(Vector3.up * 0.001f);
L1Dist = Vector3.Distance(HPLine1.transform.position, Krest.transform.position);
if (L1Dist >= 0.18f)
{
L1Stady = 2;
}
}
if (L1Dist < 0.18f && L1Stady == 0)
{
HPLine1.transform.Translate(Vector3.down * 0.001f);
L1Dist = Vector3.Distance(HPLine1.transform.position, Krest.transform.position);
if (L1Dist >= 0.18f)
{
L1Stady = 1;
}
}
// Конец управления HPLine1.
// Управление HPLine2
Ucolor = (HPLine2.GetComponent<Renderer>().material.color);
if (L2Sost == 1)
{
if (Ucolor.a > 0.99f)
{
L2Sost = 0;
Ucolor.a = 1f;
(HPLine2.GetComponent<Renderer>().material.color) = Ucolor;
}
}
if (L2Sost == 0)
{
if (Ucolor.a > 0f)
{
Ucolor.a = Ucolor.a - 0.01f;
(HPLine2.GetComponent<Renderer>().material.color) = Ucolor;
}
}
if (L2Sost == 1)
{
if (Ucolor.a < 10f)
{
Ucolor.a = Ucolor.a + 0.01f;
(HPLine2.GetComponent<Renderer>().material.color) = Ucolor;
}
}
if (Ucolor.a <= 0f && L2Sost == 0)
{
L2Sost = 1;
}
L2Dist = Vector3.Distance(HPLine2.transform.position, Krest.transform.position);
if (L2Dist > 0f && L2Stady == 2)
{
HPLine2.transform.Translate(Vector3.down * 0.002f);
L2Dist = Vector3.Distance(HPLine2.transform.position, Krest.transform.position);
if (L2Dist >= 0.18f)
{
L2Stady = 1;
}
}
if (L2Dist > 0f && L2Stady == 1)
{
HPLine2.transform.Translate(Vector3.up * 0.002f);
L2Dist = Vector3.Distance(HPLine2.transform.position, Krest.transform.position);
if (L2Dist >= 0.18f)
{
L2Stady = 2;
}
}
if (L2Dist < 0.18f && L2Stady == 0)
{
HPLine2.transform.Translate(Vector3.down * 0.002f);
L2Dist = Vector3.Distance(HPLine2.transform.position, Krest.transform.position);
if (L2Dist >= 0.18f)
{
L2Stady = 1;
}
}
// Конец управления HPLine2.
// Управление HPLine3
Ucolor = (HPLine3.GetComponent<Renderer>().material.color);
if (L3Sost == 1)
{
if (Ucolor.a > 0.99f)
{
L3Sost = 0;
Ucolor.a = 1f;
(HPLine3.GetComponent<Renderer>().material.color) = Ucolor;
}
}
if (L3Sost == 0)
{
if (Ucolor.a > 0f)
{
Ucolor.a = Ucolor.a - 0.01f;
(HPLine3.GetComponent<Renderer>().material.color) = Ucolor;
}
}
if (L3Sost == 1)
{
if (Ucolor.a < 10f)
{
Ucolor.a = Ucolor.a + 0.01f;
(HPLine3.GetComponent<Renderer>().material.color) = Ucolor;
}
}
if (Ucolor.a <= 0f && L3Sost == 0)
{
L3Sost = 1;
}
L3Dist = Vector3.Distance(HPLine3.transform.position, Krest.transform.position);
if (L3Dist > 0f && L3Stady == 2)
{
HPLine3.transform.Translate(Vector3.down * 0.0005f);
L3Dist = Vector3.Distance(HPLine3.transform.position, Krest.transform.position);
if (L3Dist >= 0.17f)
{
L3Stady = 1;
}
}
if (L3Dist > 0f && L3Stady == 1)
{
HPLine3.transform.Translate(Vector3.up * 0.0005f);
L3Dist = Vector3.Distance(HPLine3.transform.position, Krest.transform.position);
if (L3Dist >= 0.17f)
{
L3Stady = 2;
}
}
if (L3Dist < 0.17f && L3Stady == 0)
{
HPLine3.transform.Translate(Vector3.down * 0.0005f);
L3Dist = Vector3.Distance(HPLine3.transform.position, Krest.transform.position);
if (L3Dist >= 0.17f)
{
L3Stady = 1;
}
}
// Конец управления HPLine3.
// Управление HPLine4
Ucolor = (HPLine4.GetComponent<Renderer>().material.color);
if (L4Sost == 1)
{
if (Ucolor.a > 0.99f)
{
L4Sost = 0;
Ucolor.a = 1f;
(HPLine4.GetComponent<Renderer>().material.color) = Ucolor;
}
}
if (L4Sost == 0)
{
if (Ucolor.a > 0f)
{
Ucolor.a = Ucolor.a - 0.025f;
(HPLine4.GetComponent<Renderer>().material.color) = Ucolor;
}
}
if (L4Sost == 1)
{
if (Ucolor.a < 10f)
{
Ucolor.a = Ucolor.a + 0.025f;
(HPLine4.GetComponent<Renderer>().material.color) = Ucolor;
}
}
if (Ucolor.a <= 0f && L4Sost == 0)
{
L4Sost = 1;
}
L4Dist = Vector3.Distance(HPLine4.transform.position, Krest.transform.position);
if (L4Dist > 0f && L4Stady == 2)
{
HPLine4.transform.Translate(Vector3.down * 0.003f);
L4Dist = Vector3.Distance(HPLine4.transform.position, Krest.transform.position);
if (L4Dist >= 0.18f)
{
L4Stady = 1;
}
}
if (L4Dist > 0f && L4Stady == 1)
{
HPLine4.transform.Translate(Vector3.up * 0.003f);
L4Dist = Vector3.Distance(HPLine4.transform.position, Krest.transform.position);
if (L4Dist >= 0.18f)
{
L4Stady = 2;
}
}
if (L4Dist < 0.18f && L4Stady == 0)
{
HPLine4.transform.Translate(Vector3.down * 0.003f);
L4Dist = Vector3.Distance(HPLine4.transform.position, Krest.transform.position);
if (L4Dist >= 0.18f)
{
L4Stady = 1;
}
}
// Конец управления HPLine4.
// Управление HPLine5
Ucolor = (HPLine5.GetComponent<Renderer>().material.color);
if (L5Sost == 1)
{
if (Ucolor.a > 0.99f)
{
L5Sost = 0;
Ucolor.a = 1f;
(HPLine5.GetComponent<Renderer>().material.color) = Ucolor;
}
}
if (L5Sost == 0)
{
if (Ucolor.a > 0f)
{
Ucolor.a = Ucolor.a - 0.002f;
(HPLine5.GetComponent<Renderer>().material.color) = Ucolor;
}
}
if (L5Sost == 1)
{
if (Ucolor.a < 10f)
{
Ucolor.a = Ucolor.a + 0.002f;
(HPLine5.GetComponent<Renderer>().material.color) = Ucolor;
}
}
if (Ucolor.a <= 0f && L5Sost == 0)
{
L5Sost = 1;
}
L5Dist = Vector3.Distance(HPLine5.transform.position, Krest.transform.position);
if (L5Dist > 0f && L5Stady == 2)
{
HPLine5.transform.Translate(Vector3.down * 0.003f);
L5Dist = Vector3.Distance(HPLine5.transform.position, Krest.transform.position);
if (L5Dist >= 0.18f)
{
L5Stady = 1;
}
}
if (L5Dist > 0f && L5Stady == 1)
{
HPLine5.transform.Translate(Vector3.up * 0.003f);
L5Dist = Vector3.Distance(HPLine5.transform.position, Krest.transform.position);
if (L5Dist >= 0.18f)
{
L5Stady = 2;
}
}
if (L5Dist < 0.18f && L5Stady == 0)
{
HPLine5.transform.Translate(Vector3.down * 0.003f);
L5Dist = Vector3.Distance(HPLine5.transform.position, Krest.transform.position);
if (L5Dist >= 0.18f)
{
L5Stady = 1;
}
}
// Конец управления HPLine5.
// Управление Begunok1.
if (B1Stady == 2)
{
if (Vector3.Distance(Begunok1.transform.position, B1ML.transform.position) > 0f && Vector3.Distance(Begunok1.transform.position, B1MR.transform.position) < ((((0.495f) * ((HP * 100f) / MAXHP)) / 100f) * 4f))
{
Begunok1.transform.Translate(Vector3.right * (((0.005f) * ((HP * 100f) / MAXHP)) / 100f));
}
Ucolor = (Begunok1.GetComponent<Renderer>().material.color);
if (Ucolor.a > 0f)
{
Ucolor.a = Ucolor.a - 0.003f;
(Begunok1.GetComponent<Renderer>().material.color) = Ucolor;
}
if (Vector3.Distance(Begunok1.transform.position, B1ML.transform.position) <= 0.005f && B1Stady == 2)
{
B1Stady = 1;
Ucolor = (Begunok1.GetComponent<Renderer>().material.color);
Ucolor.a = 0f;
(Begunok1.GetComponent<Renderer>().material.color) = Ucolor;
}
}
if (B1Stady == 1)
{
if (Vector3.Distance(Begunok1.transform.position, B1MR.transform.position) > 0f)
{
Begunok1.transform.Translate(Vector3.left * (((0.005f) * ((HP * 100f) / MAXHP)) / 100f));
}
if (Vector3.Distance(Begunok1.transform.position, B1MR.transform.position) <= 0.005f && B1Stady == 1)
{
B1Stady = 2;
Ucolor = (Begunok1.GetComponent<Renderer>().material.color);
Ucolor.a = 1f;
(Begunok1.GetComponent<Renderer>().material.color) = Ucolor;
}
}
if (B1Stady == 0)
{
if (Vector3.Distance(Begunok1.transform.position, B1ML.transform.position) > 0f && Vector3.Distance(Begunok1.transform.position, B1MR.transform.position) < ((((0.495f) * ((HP * 100f) / MAXHP)) / 100f) * 4f))
{
Begunok1.transform.Translate(Vector3.right * (((0.005f) * ((HP * 100f) / MAXHP)) / 100f));
}
Ucolor = (Begunok1.GetComponent<Renderer>().material.color);
if (Ucolor.a > 0f)
{
Ucolor.a = Ucolor.a - 0.003f;
(Begunok1.GetComponent<Renderer>().material.color) = Ucolor;
}
if (Vector3.Distance(Begunok1.transform.position, B1ML.transform.position) <= 0.005f && B1Stady == 0)
{
B1Stady = 1;
Ucolor = (Begunok1.GetComponent<Renderer>().material.color);
Ucolor.a = 0f;
(Begunok1.GetComponent<Renderer>().material.color) = Ucolor;
}
}
// Конец управления Begunok1.
// Управление Begunok2.
if (B2Stady == 2)
{
if (Vector3.Distance(Begunok2.transform.position, B2MR.transform.position) > 0f && Vector3.Distance(Begunok2.transform.position, B2ML.transform.position) < ((((0.4900002f) * ((HP * 100f) / MAXHP)) / 100f) * 4f))
{
Begunok2.transform.Translate(Vector3.left * (((0.005f) * ((HP * 100f) / MAXHP)) / 100f));
}
Ucolor = (Begunok2.GetComponent<Renderer>().material.color);
if (Ucolor.a > 0f)
{
Ucolor.a = Ucolor.a - 0.003f;
(Begunok2.GetComponent<Renderer>().material.color) = Ucolor;
}
if (Vector3.Distance(Begunok2.transform.position, B2MR.transform.position) <= 0.005f && B2Stady == 2)
{
B2Stady = 1;
Ucolor = (Begunok2.GetComponent<Renderer>().material.color);
Ucolor.a = 0f;
(Begunok2.GetComponent<Renderer>().material.color) = Ucolor;
}
}
if (B2Stady == 1)
{
if (Vector3.Distance(Begunok2.transform.position, B2ML.transform.position) > 0f)
{
Begunok2.transform.Translate(Vector3.right * (((0.005f) * ((HP * 100f) / MAXHP)) / 100f));
}
if (Vector3.Distance(Begunok2.transform.position, B2ML.transform.position) <= 0.005f && B2Stady == 1)
{
B2Stady = 2;
Ucolor = (Begunok2.GetComponent<Renderer>().material.color);
Ucolor.a = 1f;
(Begunok2.GetComponent<Renderer>().material.color) = Ucolor;
}
}
if (B2Stady == 0)
{
if (Vector3.Distance(Begunok2.transform.position, B2MR.transform.position) > 0f && Vector3.Distance(Begunok2.transform.position, B2ML.transform.position) < ((((0.4900002f) * ((HP * 100f) / MAXHP)) / 100f) * 4f))
{
Begunok2.transform.Translate(Vector3.left * (((0.005f) * ((HP * 100f) / MAXHP)) / 100f));
}
Ucolor = (Begunok2.GetComponent<Renderer>().material.color);
if (Ucolor.a > 0f)
{
Ucolor.a = Ucolor.a - 0.003f;
(Begunok2.GetComponent<Renderer>().material.color) = Ucolor;
}
if (Vector3.Distance(Begunok2.transform.position, B2MR.transform.position) <= 0.005f && B2Stady == 0)
{
B2Stady = 1;
Ucolor = (Begunok2.GetComponent<Renderer>().material.color);
Ucolor.a = 0f;
(Begunok2.GetComponent<Renderer>().material.color) = Ucolor;
}
}
// Конец управления Begunok2.
Timer = 0.1f;
}
}
}
Много самокопипасты внутри кода, т.к. линиями управляет одинаковый
код, но с другими значениями. Оптимизировать размер можно,
не стал заморачиваться, смысла не имеет. На счёт скорости работы
кодом, не уверен, что она выше, т.к. я например постоянно мерю расстояния.
Первый вариант у меня был на таймерах, но я пришёл к выводу, что таймеры здесь неуместны.
Ну и вместо констант магические числа, для меня они те же константы )
Сообщение от ABTOMAT
Но зачем и чтобы что, если кодом проще?
|
Его вариант в реализации в разы быстрее, и кода в разы меньше.
Отличный вариант для дизайнера ) Ну, когда игры чисто на нодах пишут во всяких UE )
В общем данный способ имеет место быть, и нужно это как-то на ус мотать,
реально вижу экономит время.
|