小白的Unity5之路(一)
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之路(一)的更多相关文章
- 小白的Unity5之路(二)镜头平滑跟随角色
这次要完成Camera跟随Player移动, 首先考虑Camera的跟随目标target和平滑移动速度smothing再考虑Camera与Player的偏移量(就是Camera与Player有一个永恒 ...
- 小白的springboot之路(一)、环境搭建、第一个实例
小白的springboot之路(一).环境搭建.第一个实例 0- 前言 Spring boot + spring cloud + vue 的微服务架构技术栈,那简直是爽得不要不要的,怎么爽法,自行度娘 ...
- 小白的Python之路 day1
Python之路,Day1 - Python基础1 本节内容 Python介绍 发展史 Python 2 or 3? 一. Python介绍 python的创始人为吉多·范罗苏姆(Guido van ...
- 小白的Python之路 day1 变量
Python之路,Day1 - Python基础1 变量 变量用于存储在计算机程序中引用和操作的信息.它们还提供了一种用描述性名称标记数据的方法,这样我们的程序就能更清晰地被读者和我们自己理解.将变量 ...
- 小白学习Python之路---开发环境的搭建
本节内容 1.Python的介绍 2.发展史 3.安装Python 4.搭建开发环境 5.Hello World程序 一.Python的介绍 Python的创始人为荷兰人吉多·范罗苏姆(Guido v ...
- 小白的学习之路(hello wold!)
Hello word ! 一直想写博客,但是都拖延了,正好两天有假期就开始弄这个事情了.开始觉得写博客也没有什么,一路学习以来都是看别人的博客进行学习,也收藏了不少博客,学到了不少东西,所以我觉的博客 ...
- 小白学习python之路(一):安装python3
引言 作为一个python小白,之前学的是java,不过听说python很流行,功能很强大,可以用很少的代码实现更强的功能,因此我也是被吸引了过来,并且把我的学习经历记录下来. 当然了,要学习 ...
- Python小白的发展之路之Python基础(二)
列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1.列表.元组操作 (1)列表 列表是可变的(mutable)--可以改变列表的内容,这不同于字符串和元组,字符串和元组都是不 ...
- Python小白的发展之路之Python基础(一)
Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...
随机推荐
- HiJson工具 && 火狐浏览器中的jsonHandle插件(以及乱码问题的解决)-->来转换json串的格式
原文:http://blog.csdn.net/cjm2484836553/article/details/72453907 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] ...
- 理解android中ListFragment和Loader
一直以来不知Android中Loader怎么用,今天晚上特意花了时间来研究,算是基本上搞明白了,现在把相关的注释和代码发出来,以便笔记和给网友一个参考,错误之处还望大家给我留言,共同进步,这个例子采用 ...
- CSS background 属性详解
CSS background Property 语法: background: bg-color bg-image position/bg-size bg-repeat bg-origin bg-cl ...
- C#模拟HTTP POST 请求
GET请求: /// <summary> /// 获取accessToken /// </summary> /// <param name="corpid&qu ...
- vuejs plus d3
vuejs 是一个数据驱动视图的前端框架,一切皆可以作为可重用的组件加以使用. d3则是数据可视化javascript库,如何将二者的长处相结合是一个挑战. https://tyronetudehop ...
- java正则表达式校验移动电话、固话、邮编的校验
package com.tmall.epp.web.module.util; import java.util.regex.Pattern; /** * 移动电话.固话.邮编的校验 * @since ...
- Ionic控件之——按钮(Button)
Ionic提供丰富的按钮特性,足以满足大部分的按钮实现需求. 一.HTML实现一个简单按钮: <button class="button"> 我是按钮 </but ...
- 安装PHPphp-5.4.4
一.下载PHPphp-5.4.4 [root@aliyun software]# pwd /software[root@aliyun software]# wget http://mirrors.so ...
- Centos7 下编译 Openjdk8
本文主要介绍如何在 Centos7 下编译 Openjdk8 源码,<深入理解java虚拟机>第二版网上好多 openjdk7 的帖子,编译 jdk8 和 7 还是有些差别的,比如大家经常 ...
- July 29th 2017 Week 30th Saturday
Where there is great love, there are always miracles. 哪里有真爱存在,哪里就有奇迹发生. Everyone expects there can b ...