英文:
Creating objects up to a point along a certain direction in unity 3d
问题
我正在制作一个恐怖游戏,其中一部分是一个敌人可以检测到的手电筒。我正在使用一组立方体,怪物将能够检测到它们。我无法弄清楚如何从手电筒到墙壁创建一行这些立方体。
我已经获取了手电筒指向的方向:
hitDirection = (hit.point - flashlight.transform.position).normalized;
以及射线投射的长度(我称之为“rayLength”),使用这个长度创建了以下循环以每米创建一个对象:
for (int i = 0; i < rayLength; i++)
{
Instantiate(visionCube, new Vector3(), Quaternion.identity);
}
显然,new Vector3
是空的,这是因为我在其中放了一些东西,但似乎没有达到我想要的效果。
英文:
I am making a horror game and part of that is a flashlight that an enemy can detect. I am using a set of cubes that the monster will be able to detect. I can't figure out how to create a line of those cubes from the flashlight to the wall.
I have grabbed the direction the torch is pointing in with:
hitDirection = (hit.point - flashlight.transform.position).normalized;
and the length of the ray cast by grabbing the hit distance (which I called "rayLength")
using that I created this for loop to create the object every metre:
for (int i = 0; i > rayLength; i++)
{
Instantiate(visionCube, new Vector3(), Quaternion.identity);
}
Obviously the new Vector3
is empty, this is because I have put a few things in there but nothing seems to do what I want it to.
答案1
得分: 0
使用标准化的方向,将其与距离相乘,然后加上起点。
for (float d = 0; d < rayLength; d += 1.0f)
{
Instantiate(visionCube, originPosition + hitDirection * d, Quaternion.identity);
}
这将在起点创建一个立方体,以及在该方向上每隔1.0f
单位创建一个。您还可以在射线击中点处创建一个最终立方体,因为它可以在上一个创建的立方体之间的任意距离之间,距离范围为0到increment
单位。
如果您想更改放置每个立方体的距离,请将d += 1.0f
更改为您想要的距离。
英文:
Use the normalized direction and mutliply it by the distance and add the origin.
for (float d = 0; d < rayLength; d += 1.0f)
{
Instantiate(visionCube, originPosition + hitDirection * d, Quaternion.identity);
}
This will create a cube at the origin, and every 1.0f
units away in the direction. You may also want to create a final cube at the ray hit point, since it can be any distance between 0 and increment
units from the last box you created.
If you want to change the distance each box is placed, change d += 1.0f
to the distance you want.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论