Player移动:

 public float speed = 6f;
Vector3 movement;
Rigidbody playerRididbody; void FixedUpdate () {
float h = Input.GetAxisRaw("Horizontal");
float v = Input.GetAxisRaw("Vertical");
Move(h, v);
Animating(h, v);
}
void Move(float h, float v) {
movement.Set(h, 0f, v);
movement = movement.normalized * speed * Time.deltaTime;
playerRididbody.MovePosition(transform.position + movement);
}

通过h和v的值判断Player是否移动

 void Animating(float h, float v) {

         bool walking = h !=  || v != ;   //判断Player是否移动

         anim.SetBool("IsWalking", walking);
}

Player跟随鼠标旋转:

首先建立一个面片作为地板(Floor)层,Layer也要设置成Floor.

然后删除地板的Mesh Renderer组件

 int floorMask;

   float camRayLength = 1000f;

 同时还要获取Floor层

  floorMask = LayerMask.GetMask("Floor");

  //Camera.main.ScreenPointToRay方法向某位置发射一条射线,射线与地面碰撞体产生碰撞。取得碰撞点,然后旋转Player。

     void Truing() {

         Ray camRay = Camera.main.ScreenPointToRay(Input.mousePosition);//返回一条射线

         RaycastHit floorHit;

         if (Physics.Raycast(camRay, out floorHit, camRayLength, floorMask)) {

             Vector3 playerToMouse = floorHit.point - transform.position;

             playerToMouse.y = 0f;

             Quaternion newRotation = Quaternion.LookRotation(playerToMouse);

             playerRididbody.MoveRotation(newRotation);

         }

 }

Raycast (ray : Ray, out hitInfo : RaycastHit, distance : float = Mathf.Infinity, layerMask : int = kDefaultRaycastLayers)

参数

ray

射线的起点和方向

hitInfo

如果返回true,hitInfo将包含碰到器碰撞的更多信息。

distance

射线的长度

layerMask

只选定Layermask层内的碰撞器,其它层内碰撞器忽略。

完整代码:

 using UnityEngine;

 using System.Collections;

 public class PlayerMovement : MonoBehaviour {

     public float speed = 6f;//人物移动速度

     Vector3 movement;

     Rigidbody playerRididbody;

     Animator anim;

     int floorMask;

     float camRayLength = 100f;

     void Awake() {

         floorMask = LayerMask.GetMask("Floor");

         playerRididbody = GetComponent<Rigidbody>();//获取Player身上的刚体

         anim = GetComponent<Animator>();//获取动画组件

     }

 void Start () {

 }

 // Update is called once per frame

 void FixedUpdate () {

         float h = Input.GetAxisRaw("Horizontal");

         float v = Input.GetAxisRaw("Vertical");

         Move(h, v);

         Truing();

         Animating(h, v);

     }

     //Camera.main.ScreenPointToRay方法向某位置发射一条射线,射线与地面碰撞体产生碰撞。取得碰撞点,然后旋转Player。

     void Truing() {

         Ray camRay = Camera.main.ScreenPointToRay(Input.mousePosition);//返回一条射线

         RaycastHit floorHit;

         if (Physics.Raycast(camRay, out floorHit, camRayLength, floorMask)) {

             Vector3 playerToMouse = floorHit.point - transform.position;

             playerToMouse.y = 0f;

             Quaternion newRotation = Quaternion.LookRotation(playerToMouse);

             playerRididbody.MoveRotation(newRotation);

         }

     }

     void Move(float h, float v) {

         movement.Set(h, 0f, v);

         movement = movement.normalized * speed * Time.deltaTime;

         playerRididbody.MovePosition(transform.position + movement);

     }

     void Animating(float h, float v) {

         bool walking = h !=  || v != ;   //判断Player是否移动

         anim.SetBool("IsWalking", walking);

     }

 }

小白的Unity5之路(一)的更多相关文章

  1. 小白的Unity5之路(二)镜头平滑跟随角色

    这次要完成Camera跟随Player移动, 首先考虑Camera的跟随目标target和平滑移动速度smothing再考虑Camera与Player的偏移量(就是Camera与Player有一个永恒 ...

  2. 小白的springboot之路(一)、环境搭建、第一个实例

    小白的springboot之路(一).环境搭建.第一个实例 0- 前言 Spring boot + spring cloud + vue 的微服务架构技术栈,那简直是爽得不要不要的,怎么爽法,自行度娘 ...

  3. 小白的Python之路 day1

    Python之路,Day1 - Python基础1 本节内容 Python介绍 发展史 Python 2 or 3? 一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van ...

  4. 小白的Python之路 day1 变量

    Python之路,Day1 - Python基础1 变量 变量用于存储在计算机程序中引用和操作的信息.它们还提供了一种用描述性名称标记数据的方法,这样我们的程序就能更清晰地被读者和我们自己理解.将变量 ...

  5. 小白学习Python之路---开发环境的搭建

    本节内容 1.Python的介绍 2.发展史 3.安装Python 4.搭建开发环境 5.Hello World程序 一.Python的介绍 Python的创始人为荷兰人吉多·范罗苏姆(Guido v ...

  6. 小白的学习之路(hello wold!)

    Hello word ! 一直想写博客,但是都拖延了,正好两天有假期就开始弄这个事情了.开始觉得写博客也没有什么,一路学习以来都是看别人的博客进行学习,也收藏了不少博客,学到了不少东西,所以我觉的博客 ...

  7. 小白学习python之路(一):安装python3

    引言 作为一个python小白,之前学的是java,不过听说python很流行,功能很强大,可以用很少的代码实现更强的功能,因此我也是被吸引了过来,并且把我的学习经历记录下来.     当然了,要学习 ...

  8. Python小白的发展之路之Python基础(二)

    列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1.列表.元组操作 (1)列表 列表是可变的(mutable)--可以改变列表的内容,这不同于字符串和元组,字符串和元组都是不 ...

  9. Python小白的发展之路之Python基础(一)

    Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...

随机推荐

  1. ODP.Net Tips

    Overview Oracle Data Provider for .NET是Oracle 提供的.Net版本的数据库连接组件.下载路径. 使用的核心DLL是Oracle.DataAccess.dll ...

  2. zTree 学习笔记之(一)

    zTree 学习笔记之(一) 简介 zTree 是一个依靠 jQuery 实现的多功能 “树插件”.优异的性能.灵活的配置.多种功能的组合是 zTree 最大优点. 到底有哪些具体的优点,可以参见官网 ...

  3. 你真的了解Fragment的生命周期吗?

    Android Framwork开发人员中的传奇人物Dianne Hackborn在2010年将Fragment引入了Android,也就是在android3.0之后引入Fragment,他在提交信息 ...

  4. git中常见操作指令

    从git上拉下一个项目: 1.git clone 项目链接                  2. git checkout development (切换到development分支)       ...

  5. IEC_62304_CheckList

    IEC 62304 Reference Software Lifecycle Process Applicable for Class A Class B Class C PRIMARY LIFECY ...

  6. C# 按位或,按位与, 按位异或

    a != b  ----->  a = a | b  , a 或者 b 只要有一个为 1, 那么,a 的最终结果就为 1 a &= b  ----->  a = a & b ...

  7. css中的圣杯布局和双飞翼布局

    圣杯布局 布局要求: 三列布局,中间自适应,两边定宽 中间栏要在浏览器优先渲染 允许任意列的高度最高 用最简单的CSS.最少的HACK语句 解释说明: 1.min-width:700px是为了当页面缩 ...

  8. August 20th 2017 Week 34th Sunday

    Life is not a race, but a journey to be savored each step of the way. 生活不是一场赛跑,而是每一步都应该细细品尝的人生旅程. No ...

  9. ZT fcntl设置FD_CLOEXEC标志作用

    fcntl设置FD_CLOEXEC标志作用 分类: C/C++ linux 2011-11-02 22:11 3217人阅读 评论(0) 收藏 举报 bufferexegccnullfile 通过fc ...

  10. Mybatis和Mysql的Json类型

    Mysql5.7新增加了Json类型字段,但是目前Mybatis中并不支持 1.新建MybatisJsonTypeHandler.java import com.fasterxml.jackson.a ...