【发布时间】:2021-12-18 12:05:52
【问题描述】:
我正在使用光线投射,将其RaycastHit 放入名为raycastHit 的变量中,使用它来获取raycastHit.transform.name,然后我可以使用gameObject 名称中的信息来移动其位置吗?或者如果没有,我可以从raycastHit 获取信息来直接移动它吗? (在光线投射功能之外)我已经在寻找答案,但我只找到关于如何移动任何gameObject 的结果。
编辑1: 我当前版本的 void:
public RaycastHit raycastHit;
private void HandleHookShotStart()
{
if (TestInputDownHookShot())
{
int gm = LayerMask.NameToLayer("Ground");
int lwm = LayerMask.NameToLayer("LightWeight");
int layers = 1 << gm | 1 << lwm;
if (Physics.Raycast(Shoulder.transform.position, cam.transform.forward, out raycastHit, float.PositiveInfinity, layers))
{
//Hit Something
debugHitpointTransform.position = raycastHit.point;
hookshotPosition = raycastHit.point;
hookShotSize = 0f;
HookShotTransform.gameObject.SetActive(true);
HookShotTransform.localScale = Vector3.zero;
if (raycastHit.collider.gameObject.layer == gm)
{
Debug.Log("ground");
hitType = HitType.Ground;
}
else if (raycastHit.collider.gameObject.layer == lwm)
{
//Debug.Log("lightweight");
hitType = HitType.Lightweight;
goToMove = raycastHit.collider.gameObject;
string raycastHitObjectname = goToMove.name;
}
state = State.HookShotThrown;
}
}
}
EDIT2:
private void HandleHookShotGrab()
{
GameObject raycastHitObject = GameObject.Find(raycastHitObjectName);
}
错误出现在raycastHitObjectName
错误:
CS0103 the name 'raycastHitObjectName' does not exist in the current context
【问题讨论】:
-
raycastHit.transform.position = ....?也许我不明白你的问题,但如果你已经有一个Transform参考......是什么阻碍你移动对象? -
哦,移动被击中的游戏对象是完全有意义的
标签: unity3d raycasting gameobject