Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Unity 3D弹簧关节纹理_C#_Unity3d - Fatal编程技术网

C# Unity 3D弹簧关节纹理

C# Unity 3D弹簧关节纹理,c#,unity3d,C#,Unity3d,你好,我正在做一个简单的3d游戏,我想做一个像抓钩这样的东西,而且一切都很完美,但我找不到一个解决方案,如何让它有纹理。这是我的密码: SpringJoint joint; public GameObject playerCam; Vector3 grapplepoint; private void StartGrapplinghook() { print("grapple"); RaycastHit[] hits = Physics.Raycas

你好,我正在做一个简单的3d游戏,我想做一个像抓钩这样的东西,而且一切都很完美,但我找不到一个解决方案,如何让它有纹理。这是我的密码:

SpringJoint joint;
public GameObject playerCam;
Vector3 grapplepoint;
    private void StartGrapplinghook()
    {
        print("grapple");
        RaycastHit[] hits = Physics.RaycastAll(playerCam.transform.position, playerCam.transform.forward, 30f);
        if (hits.Length < 1) return;
        grapplepoint = hits[0].point;
        joint = gameObject.AddComponent<SpringJoint>();
        joint.autoConfigureConnectedAnchor = false;
        joint.connectedAnchor = grapplepoint;
        joint.spring = 2.5f;
        joint.damper = 0.25f;

    }
SpringJoint;
公共游戏对象播放器;
矢量3抓取点;
私有void StartGrapplinghook()
{
打印(“抓斗”);
RaycastHit[]hits=Physics.RaycastAll(playerCam.transform.position,playerCam.transform.forward,30f);
如果(hits.Length<1)返回;
抓取点=命中[0]。点;
joint=gameObject.AddComponent();
joint.autoConfigureConnectedAnchor=false;
joint.connectedAnchor=抓取点;
接头弹簧=2.5f;
接头阻尼=0.25f;
}

希望你们能帮我。

我会使用一个
线条渲染器
来实现这一点,如果启用了它,会在每一帧更新它的位置

在脚本所在的同一游戏对象上制作并配置
LineRenderer
组件。注释中的代码解释

[RequireComponent(typeof(LineRenderer))]
public class MyClassName : MonoBehaviour
{
    [SerializeField]
    LineRenderer grappleRenderer;   

    SpringJoint joint;
    public GameObject playerCam;
    Vector3 grapplepoint;

    void Awake() 
    {
        // Whatever is already here...

        // If you don't need a fresh grapple copy every time, 
        // create them once here or in the editor and re-use them
        joint = gameObject.AddComponent<SpringJoint>(); 
        joint.autoConfigureConnectedAnchor = false;
        joint.spring = 2.5f;
        joint.damper = 0.25f;

        grappleRenderer = GetComponent<LineRenderer>(); 
        grappleRenderer.positionCount = 2; // this could just be set in the inspector

        // Don't use the grapple by default
        joint.enabled = false;
        grappleRenderer.enabled = false;
    }

    private void StartGrapplinghook()
    {
        print("grapple");
        RaycastHit[] hits = Physics.RaycastAll(playerCam.transform.position, 
                playerCam.transform.forward, 30f);

        if (hits.Length < 1) return;   

        grapplepoint = hits[0].point;

        joint.enabled = true;
        joint.connectedAnchor = grapplepoint;

        grappleRenderer.enabled = true;
    }

    void StopGrapplingHook()
    {
        // turn off joint and renderer
        joint.enabled = false;
        grappleRenderer.enabled = false;
    }

    // grapple rendering can happen after all other updates finish
    // determining if it should be rendered or not that frame
    void LateUpdate()
    {
        if (grappleRenderer.enabled)
        {
            Vector3 grappleStart = transform.position; // or something that makes sense
            grappleRenderer.SetPoints(new Vector3[]{grapplepoint, grappleStart}); 
        }
    }
}
[RequireComponent(typeof(LineRenderer))]
公共类MyClassName:MonoBehavior
{
[序列化字段]
线渲染器抓图渲染器;
弹簧接头;
公共游戏对象播放器;
矢量3抓取点;
无效唤醒()
{
//不管这里已经有什么。。。
//如果你不需要每次都有新的抓斗副本,
//在此处或编辑器中创建一次并重新使用它们
joint=gameObject.AddComponent();
joint.autoConfigureConnectedAnchor=false;
接头弹簧=2.5f;
接头阻尼=0.25f;
grappleRenderer=GetComponent();
grappleRenderer.positionCount=2;//这可以在inspector中设置
//默认情况下不要使用抓斗
joint.enabled=false;
grappleRenderer.enabled=false;
}
私有void StartGrapplinghook()
{
打印(“抓斗”);
RaycastHit[]hits=Physics.RaycastAll(playerCam.transform.position,
playerCam.transform.forward,30f);
如果(hits.Length<1)返回;
抓取点=命中[0]。点;
joint.enabled=true;
joint.connectedAnchor=抓取点;
grappleRenderer.enabled=true;
}
无效停止抓斗书()
{
//关闭关节和渲染器
joint.enabled=false;
grappleRenderer.enabled=false;
}
//抓斗渲染可以在所有其他更新完成后进行
//确定是否应渲染该帧
void LateUpdate()
{
if(grappleRenderer.enabled)
{
Vector3 grappleStart=transform.position;//或有意义的东西
设置点(新矢量3[]{grapplepoint,grappleStart});
}
}
}

我会为此使用一个
线条渲染器
,如果启用,则会在每一帧更新其位置

在脚本所在的同一游戏对象上制作并配置
LineRenderer
组件。注释中的代码解释

[RequireComponent(typeof(LineRenderer))]
public class MyClassName : MonoBehaviour
{
    [SerializeField]
    LineRenderer grappleRenderer;   

    SpringJoint joint;
    public GameObject playerCam;
    Vector3 grapplepoint;

    void Awake() 
    {
        // Whatever is already here...

        // If you don't need a fresh grapple copy every time, 
        // create them once here or in the editor and re-use them
        joint = gameObject.AddComponent<SpringJoint>(); 
        joint.autoConfigureConnectedAnchor = false;
        joint.spring = 2.5f;
        joint.damper = 0.25f;

        grappleRenderer = GetComponent<LineRenderer>(); 
        grappleRenderer.positionCount = 2; // this could just be set in the inspector

        // Don't use the grapple by default
        joint.enabled = false;
        grappleRenderer.enabled = false;
    }

    private void StartGrapplinghook()
    {
        print("grapple");
        RaycastHit[] hits = Physics.RaycastAll(playerCam.transform.position, 
                playerCam.transform.forward, 30f);

        if (hits.Length < 1) return;   

        grapplepoint = hits[0].point;

        joint.enabled = true;
        joint.connectedAnchor = grapplepoint;

        grappleRenderer.enabled = true;
    }

    void StopGrapplingHook()
    {
        // turn off joint and renderer
        joint.enabled = false;
        grappleRenderer.enabled = false;
    }

    // grapple rendering can happen after all other updates finish
    // determining if it should be rendered or not that frame
    void LateUpdate()
    {
        if (grappleRenderer.enabled)
        {
            Vector3 grappleStart = transform.position; // or something that makes sense
            grappleRenderer.SetPoints(new Vector3[]{grapplepoint, grappleStart}); 
        }
    }
}
[RequireComponent(typeof(LineRenderer))]
公共类MyClassName:MonoBehavior
{
[序列化字段]
线渲染器抓图渲染器;
弹簧接头;
公共游戏对象播放器;
矢量3抓取点;
无效唤醒()
{
//不管这里已经有什么。。。
//如果你不需要每次都有新的抓斗副本,
//在此处或编辑器中创建一次并重新使用它们
joint=gameObject.AddComponent();
joint.autoConfigureConnectedAnchor=false;
接头弹簧=2.5f;
接头阻尼=0.25f;
grappleRenderer=GetComponent();
grappleRenderer.positionCount=2;//这可以在inspector中设置
//默认情况下不要使用抓斗
joint.enabled=false;
grappleRenderer.enabled=false;
}
私有void StartGrapplinghook()
{
打印(“抓斗”);
RaycastHit[]hits=Physics.RaycastAll(playerCam.transform.position,
playerCam.transform.forward,30f);
如果(hits.Length<1)返回;
抓取点=命中[0]。点;
joint.enabled=true;
joint.connectedAnchor=抓取点;
grappleRenderer.enabled=true;
}
无效停止抓斗书()
{
//关闭关节和渲染器
joint.enabled=false;
grappleRenderer.enabled=false;
}
//抓斗渲染可以在所有其他更新完成后进行
//确定是否应渲染该帧
void LateUpdate()
{
if(grappleRenderer.enabled)
{
Vector3 grappleStart=transform.position;//或有意义的东西
设置点(新矢量3[]{grapplepoint,grappleStart});
}
}
}