Unity3d 在统一中使用触摸快速移动对象可以在屏幕上显示?
我目前正在开发一款游戏,我想让玩家使用触摸控制在屏幕上拖动游戏对象。但是,出于某种原因,我的代码不断返回错误(“deltaPosition”在当前上下文中不存在),这是不应该发生的,因为我从youtube视频中获取的代码,当用户显示代码时,代码没有显示任何编译错误。这是因为C#的新版本,还是有人知道我如何解决这个问题。谢谢Unity3d 在统一中使用触摸快速移动对象可以在屏幕上显示?,unity3d,vector,game-engine,Unity3d,Vector,Game Engine,我目前正在开发一款游戏,我想让玩家使用触摸控制在屏幕上拖动游戏对象。但是,出于某种原因,我的代码不断返回错误(“deltaPosition”在当前上下文中不存在),这是不应该发生的,因为我从youtube视频中获取的代码,当用户显示代码时,代码没有显示任何编译错误。这是因为C#的新版本,还是有人知道我如何解决这个问题。谢谢 没有deltaPosition,因为您命名了变量deltaPosition,因此出现错误(“deltaPosition”在当前上下文中不存在) 您能公布全部错误吗?它应该告诉
没有
deltaPosition
,因为您命名了变量deltaPosition
,因此出现错误(“deltaPosition”在当前上下文中不存在)
您能公布全部错误吗?它应该告诉你哪一行不工作…这里的问题是由于打字错误。有时你拼写它的位置,有时是位置。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PositionTracker : MonoBehaviour
{
[SerializeField]
float _horizontalimit = 2.5f, _verticalLimit = 2.5f, dragSpeed = 0.1f;
Transform cashedTransform;
Vector3 startingPos;
void Start()
{
cashedTransform = transform;
startingPos = cashedTransform.position;
}
void Update()
{
if (Input.touchCount > 0)
{
Vector2 deltaPostion = Input.GetTouch(0).deltaPosition;
switch (Input.GetTouch(0).phase)
{
case TouchPhase.Began:
break;
case TouchPhase.Moved:
DragObject(deltaPosition);
break;
case TouchPhase.Ended:
break;
}
}
//Debug.Log("target is " + touch.position + " pixels from the left");
}
void DragObject(Vector2 deltaPostion)
{
cashedTransform.position = new Vector3(Mathf.Clamp((deltaPosition.x * dragSpeed) + cashedTransform.position.x,
startingPos.x - _horizontalimit, startingPos.x + _horizontalimit),
Mathf.Clamp((deltaPostion.y * dragSpeed) + cashedTransform.position.y,
startingPos.y - _verticalLimit, startingPos.y + _verticalLimit),
cashedTransform.position.z);
}
}