我使用Input.touchCount旋转角色。 İf我在屏幕上拖动手指;角色在旋转。到目前为止没问题...... 我在屏幕下添加了操纵杆以移动角色。操纵杆是工作。但是当使用操纵杆时角色正在旋转。 当操纵杆向上移动时,角色正在移动,而且旋转角色。我应该在“触摸字符旋转”代码中执行被动操纵杆区域。但是怎么样? 以下视频将有助于更好地解释我的问题:
http://www.youtube.com/watch?v=gs9Pw4MU5o8&feature=youtu.be 我的“触摸旋转字符”代码:
var targetItem : GameObject;
var GUICamera : Camera;
var ambient : GameObject;
/********Rotation Variables*********/
var rotationRate : float = 1.0;
private var wasRotating;
/************Scrolling inertia variables************/
private var scrollPosition : Vector2 = Vector2.zero;
private var scrollVelocity : float = 0;
private var timeTouchPhaseEnded: float;
private var inertiaDuration : float = 0.5f;
private var itemInertiaDuration : float = 1.0f;
private var itemTimeTouchPhaseEnded: float;
private var rotateVelocityX : float = 0;
private var rotateVelocityY : float = 0;
var hit: RaycastHit;
private var layerMask = (1 << 8) | (1 << 2);
//private var layerMask = (1 << 0);
function Start()
{
layerMask =~ layerMask;
}
function FixedUpdate()
{
if (Input.touchCount > 0)
{ // If there are touches...
var theTouch : Touch = Input.GetTouch(0); // Cache Touch (0)
var ray = Camera.main.ScreenPointToRay(theTouch.position);
var GUIRayq = GUICamera.ScreenPointToRay(theTouch.position);
if(Physics.Raycast(ray,hit,50,layerMask))
{
if(Input.touchCount == 1)
{
if (theTouch.phase == TouchPhase.Began)
{
wasRotating = false;
}
if (theTouch.phase == TouchPhase.Moved)
{
targetItem.transform.Rotate(0, theTouch.deltaPosition.x * rotationRate,0,Space.World);
wasRotating = true;
}
}
}
}
}
注意:应该是多点触控。即;旋转和移动应该一起工作。 (我很抱歉我的英语不好)