美文网首页
通过遥感控制 Cube的移动

通过遥感控制 Cube的移动

作者: Unity学习的路上 | 来源:发表于2017-01-04 22:21 被阅读0次

    这是在Unity中布局好的界面 通过左下的遥感控制中间的立方体的移动

    在中间的image中添加组件Event Trigger,并且将脚本挂载到中间的image上,在组件Event Trigger中添加两个事件,Drag和EndDrag;

    这两个事件分别是在拖动过程中调用,和拖动结束后调用

    using UnityEngine;

    using System.Collections;using 

    UnityEngine.UI;

    public class YanganTest : MonoBehaviour

    {    

    Vector3 _selfStartPos;    

    RectTransform _CurrPos;    

    float radius = 100f;    

    GameObject Player;        

    void Start()    

    {        

    _CurrPos = transform.GetComponent<RectTransform>();        //获取当前的RectTransform

    _selfStartPos = transform.position;        //获取初始位置

    GameObject PlayerP = Resources.Load("Cube") as GameObject;  //获取预设体      

    Player = Instantiate(PlayerP, Vector3.zero, Quaternion.identity) as GameObject;        //将预设体创建到场景中

    Player.AddComponent<CharacterController>();  //为预设体添加CharacterController组件使其够更加方便的控制

    }    

    public void Drag()    //该方法在拖动时调用,方法名并没有规定

    {        

    if (Vector3.Distance(Input.mousePosition, _selfStartPos) <= radius) //如果鼠标距离初始位置小于半径       

    {           

     transform.position = Input.mousePosition;        //使中间的image的位置等于鼠标位置

    }    

    }   

    public void EndDrag()    //该方法在拖动结束后调用,方法名并没有规定

    {       

     transform.position = _selfStartPos;   //拖动结束后使其归位

     }    

    public void FixedUpdate()    //执行物理变化的函数,每一帧执行

    {       

     if (Vector3.Distance(_CurrPos.position, _selfStartPos) >0)       //当中间的image被拖离初始位置时

     {            

    float x = (Input.mousePosition - _selfStartPos).x;            //获取x坐标

    float y = (Input.mousePosition - _selfStartPos).y;            //获取y坐标

    Vector3 dir = new Vector3(x, 0,y);                        //初始化方向

    Player.GetComponent<CharacterController>().SimpleMove(dir * 5 *Time.deltaTime);//获取Player上的CharacterController组件,调用其中方法SimpleMove,这个方法的参数是一个三维向量,其中5是速度

    }

    }

    }

    相关文章

      网友评论

          本文标题:通过遥感控制 Cube的移动

          本文链接:https://www.haomeiwen.com/subject/gosavttx.html