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. CentOS7安装minio

    [root@localhost ~]# wget https://dl.minio.io/server/minio/release/linux-amd64/minio -bash: wget: 未找到 ...

  2. 用Appium让Android功能自动化测试飞起来

    前言 做Android端功能自动化已有2年多的时间了,使用过的功能自动化框架有Robotium.Uiautomator.Appium.最近研究自动化case复用的方案,调研了Appium的自动化框架, ...

  3. php 函数func_get_args()、func_get_arg()与func_num_args()之间的区别

    php经常会有一些看似相近的函数,然而区别很大.[func_get_arg(),func_get_args(),func_num_args()]的区别,我们先看一下,下面的实例代码 从上面的结果中我们 ...

  4. 几种常见的Windows 服务器无法联网/无法连接远程桌面等故障解决方案

    SEO优化扫我一.服务器无法连接远程桌面 1.Ping不通IP,网站打不开,不可以远程连接.可能是服务器死机了,或者网络有问题,请尝试Web重启服务器或联系服务商确认. 2.Ping正常,网站可以打开 ...

  5. java笔记--多线程基础

    多线程技术 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3889579.html  "谢谢-- 在java中实现多线程技术 ...

  6. DB2问题记录本

    1.System.Data.OleDb.OleDbException (0x80004005): 未指定的错误. 场景:部署网站到IIS上,使用oledb连接DB2数据库报错,开发环境正常 解决方案: ...

  7. 计算Pan手势到指定点的角度

    计算Pan手势到指定点的角度 效果图: 源码: // // RootViewController.m // Circle // // Copyright (c) 2014年 Y.X. All righ ...

  8. August 19th 2017 Week 33rd Saturday

    Live for today and stop stressing out about tomorrow. 为今天而活,不必为明天过分担心. Stop bewailing the past misfo ...

  9. Tuple元组 、 ValueTuple 值元组详解

    Tuple元组 Tuple是C# 4.0时出的新特性,.Net Framework 4.0以上版本可用. 元组是一种数据结构,具有特定数量和元素序列,与数组不同,元祖中的元素可以不同的数据类型.比如设 ...

  10. Python错误和异常概念(总)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6435956.html 本文出自:[Edwin博客园] Python错误和异常概念(总) 1. 错误和异常的处 ...