随笔 - 51, 评论 - 7, 访问 - 211349

导航


  • 访问:211349次
  • 积分:534分
  • 排名:第38名
  • 随笔:51篇
  • 评论:7条

随笔分类

随笔档案

相册

最新评论

阅读排行榜

评论排行榜

unity3d 阅读(99) 评论(0)

Easy Character Movement这个角色控制器插件使用非常方便:

• 基于Rigidbody组件
• 基于Capsule Collider组件和Box Collider组件
• 在运动的平面(dynamic platforms)上移动和旋转
• 可以停留在斜坡上
• 在直线路段和斜坡上保持相同的速度
• 从陡坡上滑下来(如果需要)
• 自带1个基础控制器(Base controller):Characters (用于角色)
• 自带1个基础控制器:Agents (NavMeshAgent) (有自动寻路的功能)
• 自带1个基础控制器: First-Person (用于第一人称(第一人称的角色控制器))
• 支持根骨骼运动(Solid Root Motion support)
• 定向到地面斜坡(Orient to ground slopes)
• 在移动端(手机上) 运行良好

 

 

EasyTouch插件也是一款非常棒的插件,可以方便地实现摇杆、触摸等功能。

如何用EasyTouch实现Easy Character Movement中角色的控制。

删除场景中自带的相机,我们用ECM_FirstPerson这个预制体生成一个实例,移除自带的角色控制器组件BaseCharacterController,新建一个脚本,例如名称为:MyCharacterController,基类为BaseCharacterController,
代码如下:

using mon;
using ECM.Controllers;
using UnityEngine;

public class MyCharacterController : BaseCharacterController
{
    private Transform playerCamera;

    // Use this for initialization
    void Start () {
        playerCamera = GameObject.FindGameObjectWithTag("MainCamera").transform;
    }
	
    protected override void HandleInput()
    {
        // 从EasyTouch中获取摇杆X,Y轴移动的数值
        moveDirection = new Vector3
        {
            x = ETCInput.GetAxis("Horizontal"),
            y = 0.0f,
            z = ETCInput.GetAxis("Vertical")
        };

        // 跳跃按钮
        jump = ETCInput.GetButton("Button jump");

        // Transform moveDirection vector to be relative to camera view direction

        moveDirection = moveDirection.relativeTo(playerCamera);
    }
}

将该脚本绑定到ECM_FirstPerson对象中即可。


发表评论
切换编辑模式