- Home /
Question by
hiitman · Feb 05, 2020 at 08:08 PM ·
collisionerrorprefabprogramming
Sinusoidal move problem
Hi. I trying drop sinusoidal enemy objects but only creating at the top of border and don't do anything. I don't know where problem is.
using UnityEngine;
public class Enemy_1 : Enemy
{
[Header("Definiowane w panelu inspekcyjnym: Enemy_1")]
// liczba sekund potrzebnych do wygenerowania pełnej sinusoidy
public float waveFrequency = 2;
// długość sinusoidy w metrach
public float waveWidth = 4;
public float waveRotY = 45;
private float x0; // poczatkowa wartość położenia na osi X
private float birthTime;
//Funkcja Start działa poprawnie, ponieważ nie jest używana przez klasę nadrzędną Enemy
// Start is called before the first frame update
void Start()
{
//Przypisz do x0 początkowe położenie statku Enemy_1
x0 = pos.x;
birthTime = Time.time;
}
// Update is called once per frame
void Update()
{
}
//Zastąp funkcję Move klasy Enemy
public override void Move()
{
//Ponieważ pos jest właściwością, nie możesz bezpośrednio zmodyfikować pola pos.x
//wczytaj więc pos do zmiennej typu Vector3, którą można zmodyfikować.
Vector3 tempPos = pos;
//Modyfikacje zmiennej theta oparte na czasie
float age = Time.time - birthTime;
float theta = Mathf.PI * 2 * age / waveFrequency;
float sin = Mathf.Sin(theta);
tempPos.x = x0 + waveWidth * sin;
pos = tempPos;
//metoda base.Move() wciąż obsługuje ruch w dół osi y
base.Move();
//print(bndCheck.isOnScreen);
}
}
untitled.jpg
(214.4 kB)
Comment