така че се борих с това буквално през цялата миналата седмица. За да започна, в момента работя върху проект на Unity и ето кода, на който съм заседнал:
private RaycastHit hit;
private Ray cast;
private bool casthit;
void Start() {
casthit = false;
Ray cast = new Ray(transform.position, transform.forward);
}
void OnTriggerEnter(Collider other){
if (other.tag == "Enemy") {
other.GetComponent<BasicEnemy>().setHealthLower(damage);
}
if (other.tag != "Turret" && other.tag != "Bullet") {
//here is where we want to reflect this object
}
}
void Update () {
Ray cast = new Ray(transform.position, transform.forward);
Physics.Raycast (cast, out hit);
transform.position += transform.forward * speed * Time.deltaTime;
}
По принцип това, което се случва, е, че имам купол, който стреля с куршуми, когато един от тези куршуми удари стена, искам той да се отрази от стената (или да отскочи от стената, ако предпочитате термина). Отразяването на стената трябва да работи по същия начин, както светлината би се отразила от повърхност. Сега проблемът е главно в това, че нямам представа как работят тези неща, особено защото трябва по някакъв начин да изчисля ъгъла, към който да се движи куршумът (така че само y стойност, която мога да дам на трансформацията, така че след това да продължи пътуване до следващата посока.
Както можете да видите, вече имам някаква основа под формата на raycasts и hit ray (защото вярвам, че ще имаме нужда от hit ray като нормален в един момент).
За съжаление обаче просто не разбирам откъде да започна моите изчисления или дори какви изчисления трябва да направя. Обичайният Vector3.reflect
не е работил досега (или поне не в някое от предишните ми изчисления) и досега имам удар на пътя, където не мога да измисля нови неща, които да опитам, така че много се надявам едно от вас момчета знае как по някакъв начин да успее да направи това.
Мерси вече!
Vector3.Reflect
. Даваш му входящ вектор и нормалата на повърхността, от която се отразява, и той ти дава резултантния вектор. docs.unity3d.com/ScriptReference/Vector3.Reflect.html - person Zach Thacker   schedule 27.05.2015