C# 使lineRenderer组件整体移动

C# 使lineRenderer组件整体移动,c#,unity3d,C#,Unity3d,我试着让这条线在每次点击时都沿着一个轴移动。正在使用lineRenderer生成此组件 额外:我需要线移动到我单击的另一侧 有人能帮忙吗 最好的, IC这里是一个实现所需基础的示例(单击线条并重新定位),但是它需要一个3D碰撞器,以便将其添加到游戏对象中,适当调整其大小,确保关闭线条渲染器组件中的“使用世界空间”,然后添加此脚本 using UnityEngine; using System.Collections; public class MoveLine : MonoBehaviour

我试着让这条线在每次点击时都沿着一个轴移动。正在使用lineRenderer生成此组件

额外:我需要线移动到我单击的另一侧

有人能帮忙吗

最好的,
IC

这里是一个实现所需基础的示例(单击线条并重新定位),但是它需要一个3D碰撞器,以便将其添加到游戏对象中,适当调整其大小,确保关闭线条渲染器组件中的“使用世界空间”,然后添加此脚本

using UnityEngine;
using System.Collections;

public class MoveLine : MonoBehaviour {

private LineRenderer line;
private Camera thisCamera;
private Ray ray;
private RaycastHit hit;

void Awake () {
    line = GetComponent<LineRenderer>();
    thisCamera = FindObjectOfType<Camera>().GetComponent<Camera>();
}

public void OnMouseDown () {
    Vector3 mousePos = Input.mousePosition;
    ray = thisCamera.ScreenPointToRay(mousePos);

    if(Physics.Raycast(ray, out hit))
    {
        print (hit.collider.name);
        line.transform.position = new Vector3(5, 5, 5); //Change to whatever position you need
    }
}
}
在同一行的“MoveLineRight”中,再次将其删除并添加以下内容:

line.transform.position = new Vector3(transform.position.x + 1, 0, 0);
额外更新 另外,在这两个脚本中的Awake函数中将GetComponent更改为GetComponentInParent,以确保对象知道从何处获取线渲染器


现在,这将为您提供所需的效果。当你点击线的左边时,它会向右移动,反之亦然。现在,如果您想在单击+/-1以外的内容时更改方向,只需更改两行的值,或者创建一个公共变量,以便在inspector中执行此操作。希望这有帮助

你能发布一些代码吗?谢谢JonHerbert的友好回复:)我已经按照你的指示添加了代码,一个盒子碰撞器2D,并确保使用世界空间被禁用(它已经被禁用)。但还是不行。截图:。我在想,也许我需要生成两个长方体碰撞器,每个都在线条的一侧,所以当我单击其中一个时,线条可以移动?你怎么认为?对不起,我是一个新手程序员:/没问题!我应该更清楚一点,这是一个3D盒子对撞机,而不是2D。你试过了吗?或者这会给你的项目带来问题吗?啊!好啊我现在明白了。好的,问题是:现在当我们在框碰撞器中单击时,它将简单地跳转到脚本中定义的位置5,5,5。我们需要的是,它能够点击线路的左侧(或右侧),让线路自身向相反方向移动1个单位。想象一下,这一行必须“远离点击”:)检查我答案上的更新,然后非常仔细地从那里开始。正如我所描述的,我想这就是你想要的。嘿!刚刚尝试了您的解决方案,我得到一个错误:。我猜getComponent试图抓住LineRenderer,就好像它在子对象本身而不是父对象中一样。此外,还有一个与此方法相关的小问题:我让玩家在每次运行游戏时动态繁殖(即,他可以在左侧或右侧繁殖)。最简单的方法是让这些子对象中的一个随它一起生成(并且正确地侧面生成),这样每个玩家都有自己的区域(通过服务器)。下面是生成:
line.transform.position = new Vector3(transform.position.x + 1, 0, 0);