开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

项目源码

关注:1026

当前位置:游戏蛮牛 资源专区 项目源码

查看: 241|回复: 2

[Unity] 摇杆与小地图的制作

[复制链接]  [移动端链接]
排名
26685
昨日变化
19

1

主题

2

帖子

10

积分

Rank: 1

UID
199237
好友
0
蛮牛币
22
威望
0
注册时间
2017-1-5
在线时间
3 小时
最后登录
2017-1-13
发表于 2017-1-5 17:51:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
//使用接口(IDragHandler,IEndDragHandler)与角色控制器(CharacterController)实现摇杆控制与物体的移动
using UnityEngine.UI;
using UnityEngine.EventSystems;
//1.使用接口
public class JockStick : MonoBehaviour,IDragHandler,IEndDragHandler {//右键自动生成
    //遥杆起始位置
    private Vector3 origin;
    private CharacterController player;
    //半径
    public float radius=40;
    //角色移动速度
    public float moveSpeed=2f;
        // Use this for initialization
        void Start () {
        origin = transform.position;
        //Debug.Log("起始坐标"+origin);
        player = GameObject.FindWithTag("Player").GetComponent<CharacterController>();
    }
       
        // Update is called once per frame
        void Update () {
        //玩家移动方向
        Vector3 playerMove_dir = transform.position - origin;
        //屏幕xy转为3Dxz坐标
        playerMove_dir = new Vector3(playerMove_dir.x, 0, playerMove_dir.y);
        //角色移动
        PlayerMove(playerMove_dir);
    }
    void PlayerMove(Vector3 dir)
    {
        player.SimpleMove(dir * moveSpeed * Time.deltaTime);
    }
    public void OnDrag(PointerEventData eventData)//2.实现接口
    {
        //计算遥杆与圆盘中心的距离
        float distance = Vector3.Distance(Input.mousePosition, origin);
        //如果在圆盘内
        if (distance <= radius)
        {
            //遥杆位置==鼠标位置
            transform.position = Input.mousePosition;
        }
        else
        {
            //获取方向向量
            Vector3 dir = Input.mousePosition - origin;
            //归一化
            dir.Normalize();
            //求出方向为dir,距离为radius的坐标
            dir*= radius;
            //将向量起点移动到圆盘中心
            dir += origin;
            //将摇杆移动至此
            transform.position = dir;
        }
    }
    public void OnEndDrag(PointerEventData data)//2.实现接口
    {
        //结束拖拽,摇杆回到原始位置
        transform.position = origin;
    }
}


回复

使用道具 举报

排名
18292
昨日变化
13

0

主题

60

帖子

85

积分

Rank: 2Rank: 2

UID
187889
好友
0
蛮牛币
109
威望
0
注册时间
2016-11-29
在线时间
11 小时
最后登录
2017-1-19
发表于 2017-1-6 12:21:30 | 显示全部楼层
有工程吗?

回复

使用道具 举报

排名
26685
昨日变化
19

1

主题

2

帖子

10

积分

Rank: 1

UID
199237
好友
0
蛮牛币
22
威望
0
注册时间
2017-1-5
在线时间
3 小时
最后登录
2017-1-13
 楼主| 发表于 2017-1-10 17:04:33 | 显示全部楼层
有啊,你用百度云账号么

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表