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);
}
}
}
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);
}
}
}
相关文章推荐
- Unity用键盘控制物体左右旋转前后移动的c#脚本
- 面向组件编程之Unity 7.怎样脚本控制物体旋转和移动 关键字:画圆&&Translate/transform.Translate,transform.Rotate
- 我的Unity(10)一点一滴 利用UI制作摇杆控制物体移动
- Unity 3D 控制物体前后左右均匀移动脚本
- Unity 3D 控制物体上下左右均匀移动脚本
- Unity 3D 控制物体前后左右均匀移动脚本
- unity。。。完美简单解决靠鼠标在屏幕上的移动来控制相机水平,垂直旋转的c#脚本
- Unity脚本,平滑跟随目标物体移动和旋转
- Unity键盘控制物体移动
- unity 3D学习日记:创建一个小场景并编写简单C#移动脚本
- 用unity来写小球转向后向目标移动 +c#脚本
- 通过滑动手势控制摇杆移动并且通过移动的速度控制能量条的增长 Unity
- Unity摄像机 向指定位置移动旋转 C#脚本
- Unity学习2 鼠标点击控制物体移动
- unity 控制物体移动和旋转
- Unity使用easytouch虚拟摇杆控制角色移动
- unity 第三人称控制对象平移转向C#脚本(亲测有效)
- Unity入门系列||Unity中如何用脚本实现物体的循环移动和旋转
- Unity用鼠标控制物体移动
- unity之手机端摇杆控制人物移动