Цель:
Я создаю шокер-шутер, шутер порождает шайбу каждые 3 секунды и запускает ее в целевой точке в пределах области стрельбы по цели;область для стрельбы - это плоскость, проходящая через лицо цели, которая действует как область для стрельбы, поскольку не все выстрелы будут в сети - шайба-шайба генерирует случайную точку в пределах этой области, что и позволяет получить цели X, Y & Z.
Я рассмотрел различные способы перемещения объекта, такие как transform.forward, transform.up и т. Д., Но я думаю, что я ищу, это puckRB.MovePosition?
Насколько я понимаю, при значении Is Is Kinematic метод MovePosition добавляет физику шайбе при ее перемещении по среде, в противном случае он просто телепортируется.Я просто не уверен, как поместить координаты целей в него с другими вещами, которые ему нужны?
void GetTarget()
{
float scale = 1f;
// Grabs the aiming plane
Transform aimingPlane = GameObject.Find("AimingPlane").gameObject.transform.GetChild(1);
// Gets the moving X & Y area of the plane
float moveAreaX = aimingPlane.GetComponent<Renderer>().bounds.size.x / 2;
float moveAreaY = aimingPlane.GetComponent<Renderer>().bounds.size.y / 2;
// Generates a random value within the move area (X, Y)
float ranX = Random.Range(-moveAreaX * scale, moveAreaX * scale);
float ranY = Random.Range(-moveAreaY * scale, moveAreaY * scale);
// Grabs the center of the AimingPlane
Vector3 center = aimingPlane.GetComponent<Renderer>().bounds.center;
// Gets the targets coordinates (X and Y)
targetCoordsX = ranX + center.x;
targetCoordsY = ranY + center.y;
// Grabs AimingDot and places at target coordinates
Transform aimingDot = GameObject.Find("AimingPlane").gameObject.transform.GetChild(0);
aimingDot.position = new Vector3(targetCoordsX, targetCoordsY, center.z);
}
void FirePuck()
{
GameObject puckCopy = Instantiate(puck, shotPos.transform.position, shotPos.transform.rotation) as GameObject;
puckRB = puckCopy.GetComponent<Rigidbody>();
Vector3 test = new Vector3(targetCoordsX, targetCoordsY);
puckRB.MovePosition(test * Time.deltaTime);
}
Подводя итог, пока программа генерирует случайную цель в пределах области стрельбы, порождает новую шайбу каждые 3 секунды, и я сейчас просто пытаюсь получить шайбу от стрелка к этой цели;в настоящий момент все шайбы телепортируются в точку прямо перед стрелком.