Unity 光线投射跟随游戏对象 C#
Unity raycast follow gameobject C#
你好,所以我想实现我的光线投射以跟随它击中的游戏对象,这样我就可以设置我的 vector3 FollowTarget,这样 vector3 就会远离跟随正在移动的游戏对象的光线投射 private void
MoveSelectedToCursorPosition()
{
RaycastHit raycastHit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out raycastHit, 1000.0f))
{
if(raycastHit.collider.tag == "Terrain")
{
gameController.UnitSelection.MoveSelectionToPosition(raycastHit.point);
}
if(raycastHit.collider.tag == "Minion")
{
FollowTarget = raycastHit.point;
gameController.UnitSelection.MoveSelectionToPosition(FollowTarget);
}
}
}
RayCast-Follow
Raycast 不能跟随任何东西。这是一个瞬时事件,它沿着 space.
中的 2 个给定点投射光线
解决方案
如评论中Draco18s所述,您可以只保存对转换的引用并使用转换位置。
public class Example {
private Transform _followTarget;
MoveSelectedToCursorPosition() {
RaycastHit raycastHit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out raycastHit, 1000.0f)) {
if (raycastHit.collider.tag == "Terrain") {
gameController.UnitSelection.MoveSelectionToPosition(raycastHit.point);
}
if (raycastHit.collider.tag == "Minion") {
this._followTarget = raycastHit.collider.transform;
gameController.UnitSelection.MoveSelectionToPosition(this._followTarget.position);
}
}
}
}
你好,所以我想实现我的光线投射以跟随它击中的游戏对象,这样我就可以设置我的 vector3 FollowTarget,这样 vector3 就会远离跟随正在移动的游戏对象的光线投射 private void
MoveSelectedToCursorPosition()
{
RaycastHit raycastHit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out raycastHit, 1000.0f))
{
if(raycastHit.collider.tag == "Terrain")
{
gameController.UnitSelection.MoveSelectionToPosition(raycastHit.point);
}
if(raycastHit.collider.tag == "Minion")
{
FollowTarget = raycastHit.point;
gameController.UnitSelection.MoveSelectionToPosition(FollowTarget);
}
}
}
RayCast-Follow
Raycast 不能跟随任何东西。这是一个瞬时事件,它沿着 space.
中的 2 个给定点投射光线解决方案
如评论中Draco18s所述,您可以只保存对转换的引用并使用转换位置。
public class Example {
private Transform _followTarget;
MoveSelectedToCursorPosition() {
RaycastHit raycastHit;
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out raycastHit, 1000.0f)) {
if (raycastHit.collider.tag == "Terrain") {
gameController.UnitSelection.MoveSelectionToPosition(raycastHit.point);
}
if (raycastHit.collider.tag == "Minion") {
this._followTarget = raycastHit.collider.transform;
gameController.UnitSelection.MoveSelectionToPosition(this._followTarget.position);
}
}
}
}