Unity3D 第三人称角色控制器结合easytouch

1、首先了解角色控制器
2、myjoystick.cs(EasyJoystick的脚本)

using UnityEngine;
using System.Collections;

public class myjoystick : MonoBehaviour {

    protected Transform m_player;   

    void Awake()
    {   //获得人物组件对象
        GameObject obj=GameObject.FindGameObjectWithTag("myMan");
        if ( obj!=null )
        {
            m_player=obj.transform;
        }
    }

    //当摇杆可用时注册事件
    void OnEnable()
    {
        EasyJoystick.On_JoystickMove += OnJoystickMove;
        EasyJoystick.On_JoystickMoveEnd += OnJoystickMoveEnd;
    }

    //当摇杆不可用时移除事件
    void OnDisable()
    {
        EasyJoystick.On_JoystickMove -= OnJoystickMove;
        EasyJoystick.On_JoystickMoveEnd -= OnJoystickMoveEnd;
    }

    //当摇杆销毁时移除事件
    void OnDestroy()
    {
        EasyJoystick.On_JoystickMove -= OnJoystickMove;
        EasyJoystick.On_JoystickMoveEnd -= OnJoystickMoveEnd;
    } 

    //移动摇杆结束    
    void OnJoystickMoveEnd(MovingJoystick move)         
    {       
        //停止时,角色恢复idle  
        if (move.joystickName == "EasyJoystick")    
        {  
            m_player.animation.CrossFade("idle");  
            print("idle");  
        }   
    }  

    //移动摇杆中  
    void OnJoystickMove(MovingJoystick move)        
    {  
        if (move.joystickName != "EasyJoystick")    
        {   
            return;     
        }  

        //获取摇杆中心偏移的坐标  
        float joyPositionX = move.joystickAxis.x;  
        float joyPositionY = move.joystickAxis.y;  

        if (joyPositionY != 0 || joyPositionX != 0)     
        {  
            print("move");
            //判断摇杆活动范围(圆的计算)
            double rsqrt =  joyPositionY*joyPositionY + joyPositionX*joyPositionX;
            if(rsqrt<2*0.7*0.7)
            {
                //设置角色的朝向(朝向当前坐标+摇杆偏移量)         
                m_player.transform.LookAt(new Vector3(m_player.transform.position.x + joyPositionX, m_player.transform.position.y, m_player.transform.position.z + joyPositionY));  
                //移动玩家的位置(按朝向位置移动)   
                m_player.transform.Translate(Vector3.forward * Time.deltaTime * 5);     
                //播放奔跑动画  
                m_player.animation.Play("walk");  
            }
            else
            {
                //设置角色的朝向(朝向当前坐标+摇杆偏移量(可以乘数来增大移动位移))  
                m_player.transform.LookAt(new Vector3(m_player.transform.position.x + joyPositionX, m_player.transform.position.y, m_player.transform.position.z + joyPositionY));  
                //移动玩家的位置(按朝向位置移动)  
                m_player.transform.Translate(Vector3.forward * Time.deltaTime * 5);  
                //播放奔跑动画  
                m_player.animation.Play("run");  
            }   
        }  
    }   
}  

3、跳跃按钮设置(参考)
注意:事件驱动、接收事件对象及其调用方法的设置,jump方法放在与对象关联的(第三人称控制器)脚本中。

function  jump()
{
    print("jump");
    lastJumpButtonTime = Time.time;
}

4、注释第三人称的角色控制器脚本的关于移动的动画,否则与摇杆的动画结合混乱;另外,注释角色面向方位更新,避免移动操作,方位回到原来方向。

//更新角色控制器的移动面向方位(角色移动操作不是使用角色控制器的,而是用摇杆的,所以控制器中默认未发生移动,即方向不变)
//transform.rotation = Quaternion.LookRotation(moveDirection);

5、还需要为角色提供地形,否则会一直坠落。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity3D是一款非常流行的游戏开发引擎,而EasyTouch是一款适用于Unity3D的轻松触控解决方案。EasyTouch可以帮助开发者在Unity3D中实现多种触控操作,例如单指触控、双指缩放、旋转、拖拽等等。 为了下载Unity3D EasyTouch5,您可以按照以下步骤进行操作: 1. 首先,您需要访问Unity3D的官方网站。您可以通过在浏览器中搜索"Unity3D官方网站"来找到它。 2. 在Unity3D官方网站上,您可以找到一个名为"Asset Store"的选项。点击这个选项,您将被带到Unity Asset Store的页面。 3. 在Unity Asset Store的页面上,您可以使用搜索栏来查找EasyTouch5。输入"EasyTouch5"并点击搜索按钮。 4. 您将看到EasyTouch5的搜索结果。点击其中一个结果以查看EasyTouch5的详细信息。 5. 在EasyTouch5的详细信息页面上,您将找到一个名为"Add to My Assets"的按钮。点击这个按钮以将EasyTouch5添加到您的Unity3D项目中。 6. 您将被要求登录到您的Unity账户。如果您尚未创建账户,您需要先创建一个账户以完成登录。 7. 在登录后,您将看到一个名为"Download"的按钮。点击这个按钮以开始下载EasyTouch5。 8. 完成下载后,您可以在Unity3D中导入EasyTouch5。具体的导入步骤可以在Unity的官方文档或EasyTouch的文档中找到。 总的来说,下载Unity3D EasyTouch5非常简单。您只需要访问官方网站,找到并下载EasyTouch5,然后将其导入到您的Unity项目中即可开始使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值