您的位置:首页 > 移动开发 > Unity3D

Unity摇杆控制物体移动c#脚本

2018-01-09 16:22 676 查看
using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.EventSystems;

public class JoyScript : MonoBehaviour {

float radius=0;
//要控制的游戏物体
public GameObject player;
//物体移动的速度
public float speed = 0.1f;
//中间摇杆的当前位置
RectTransform rectTransform;
//摇杆原始的位置
Vector3 originalPos;
// Use this for initialization
void Start () {
radius = transform.parent.GetComponent<RectTransform>().rect.width/2;
rectTransform = GetComponent<RectTransform> ();
originalPos = rectTransform.position;
}
/// <summary>
/// 拖拽过程中
/// </summary>
/// <param name="data">Data.</param>
public void OnJouDrag(BaseEventData data){
//判断当前位置与原始摇杆的距离
//如果摇杆在其大圆以内
if (Vector3.Distance (Input.mousePosition, originalPos) <= radius) {
rectTransform.position = Input.mousePosition;

} else {
//得到鼠标到原始位置的方向向量
Vector3 dir = Input.mousePosition-originalPos;
rectTransform.position = dir.normalized * radius + originalPos;
}
}
public void OnJouDragEnd(BaseEventData data){
rectTransform.position = originalPos;
}
void FixedUpdate(){
if (rectTransform.position != originalPos) {
float x, y;
if (Vector3.Distance (Input.mousePosition, originalPos) <= radius) {
x = (Input.mousePosition - originalPos).x;
y = (Input.mousePosition - originalPos).y;
} else {
x = (Input.mousePosition - rectTransform.position).x;
y = (Input.mousePosition - rectTransform.position).y;
}
Vector3 dor = new Vector3 (x, 0, y);
player.GetComponent<CharacterController> ().SimpleMove (dor * Time.deltaTime);
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: