Unity3d 如何实现游戏中的控制:rolly vortex?

Unity3d 如何实现游戏中的控制:rolly vortex?,unity3d,Unity3d,如何在视频上实现这样的控制?游戏:旋转漩涡 视频- 如何实现这种控制?我应该用什么?请帮帮我 我的代码(已编辑): 公共类触控:单行为{ 浮球高度\宽度=1f; 浮动速度=0.01f; 无效更新() { 如果(Input.touchCount>0) { Debug.Log(“Result=”+((Input.GetTouch(0.position.x/Screen.width)-0.5f)*2); if(((Input.GetTouch(0.position.x/屏幕宽度)-0.5f)*2>0)

如何在视频上实现这样的控制?游戏:旋转漩涡
视频-
如何实现这种控制?我应该用什么?请帮帮我

我的代码(已编辑):

公共类触控:单行为{
浮球高度\宽度=1f;
浮动速度=0.01f;
无效更新()
{
如果(Input.touchCount>0)
{
Debug.Log(“Result=”+((Input.GetTouch(0.position.x/Screen.width)-0.5f)*2);
if(((Input.GetTouch(0.position.x/屏幕宽度)-0.5f)*2>0){
Log((Input.GetTouch(0.position.x+0.5f)/2)+“result”);
左移();
}
if(((Input.GetTouch(0.position.x/屏幕宽度)-0.5f)*2<0)
{
Log((Input.GetTouch(0.position.x+0.5f)/2)+“result”);
MoveRight();
}
}
}
void MoveLeft()
{
Vector3 newPos=变换位置;
newPos.x=(Input.GetTouch(0.position.x*level\u width)*-1;
transform.position=Vector3.Lerp(transform.position,newPos,speed*Time.deltaTime);
}
void MoveRight()
{
Vector3 newPos=变换位置;
newPos.x=Input.GetTouch(0).position.x*level\u width;
transform.position=Vector3.Lerp(transform.position,newPos,speed*Time.deltaTime);
}
}

像这样的事情应该会让你开始:

public float level_width = 5f;
public float speed = 0.1f; // 0..1

if(Input.touchCount > 0)
{
    Vector3 newPos = transform.position;
    newPos.x =  Input.GetTouch(0).position.x * width;
    transform.position = Vector3.Lerp(transform.position, newPos, speed * Time.deltaTime)
 }
速度
将调整球到达触球位置所需的时间

level\u width
有助于将输入从屏幕坐标缩放到您的世界/级别

编辑:我简化了您的代码:

public class TouchControl: MonoBehaviour {

    float level_width = 10f;
    float speed = 0.01 f;
    float target_xpos = 0f;

    void Update() {
        if (Input.touchCount > 0) {
            target_xpos = ((Input.GetTouch(0).position.x / Screen.width) - 0.5 f) * 2 * level_width;


            MoveToFinger();
        }
    }

    void MoveToFinger() {

        Vector3 newPos = transform.position;
        newPos.x = target_xpos;
        transform.position = Vector3.Lerp(transform.position, newPos, speed * Time.deltaTime);
    }



}

是的,Vector3无法分配2个参数,我将Vector3更改为Vector2。另一个问题:对象的移动非常快,他在一次轻触中从0 x坐标移动到150 x坐标,太快了对不起,忘了Lerp中的时间参数。将编辑帖子。你好,凯勒!现在我的游戏对象正朝一个方向移动:(他按x坐标向右(+)移动。他不能按x坐标向左(-)移动。我必须做什么?Input.GetTouch(0)。position.x在0和1之间。只需使用
(Input.GetTouch(0)。position.x+0.5f)/2f)
-这将把它转换为-1..1-然后它就可以工作了:)(Input.GetTouch(0).position.x+0.5f)/2)返回一个大值,如110.4f、116f、133f e.t.c。此函数不返回-1或1
public class TouchControl: MonoBehaviour {

    float level_width = 10f;
    float speed = 0.01 f;
    float target_xpos = 0f;

    void Update() {
        if (Input.touchCount > 0) {
            target_xpos = ((Input.GetTouch(0).position.x / Screen.width) - 0.5 f) * 2 * level_width;


            MoveToFinger();
        }
    }

    void MoveToFinger() {

        Vector3 newPos = transform.position;
        newPos.x = target_xpos;
        transform.position = Vector3.Lerp(transform.position, newPos, speed * Time.deltaTime);
    }



}