角色移动优化【Unity2D自学之路】
自学unity2D独立游戏开发,第一篇自学笔记。在场景中添加角色,并给角色添加Rigidbody2D刚体组件、collection2D碰撞体组件,c#脚本组件控制人物移动和跳跃。c#脚本组件内容如下,我进行了详细的注释,以便后用,想学习的朋友可以参考一下。
using System.Collections;
using System.Collections.Generic;
using UnityEngine; public class PlayerControl : MonoBehaviour
{
private Rigidbody2D m_PlayerRb;// 人物刚体
private float m_FacingRight = ;//角色是否面向右方
private float m_MoveInputDirection;//方向输入
public float m_MoveSpeed;//移动速度
private Vector3 m_Velocity = Vector3.zero;
private float m_MovementSmoothing = .05f;//移动平滑速度 public Transform m_GroundCheck;//地面检查
public bool m_Grounded=true;//是否站在地面上主要用于跳跃是判断
public float m_JumpForce = 15f;//跳跃力量
public float groundCheckRadius = 0.2f;//地面检测半径
public LayerMask m_WhatisGround;//检测碰撞的层 [SerializeField]private float jumpFactor;
private void Awake()
{
m_PlayerRb = GetComponent<Rigidbody2D>();//获取角色刚体
}
private void Update()
{
//获取角色图片大小sp.bounds.extents.y
m_Grounded = Physics2D.OverlapCircle(m_GroundCheck.position, groundCheckRadius, m_WhatisGround);
Vector3 m_mousePostion = Input.mousePosition;//获取鼠标位置
m_mousePostion = Camera.main.ScreenToWorldPoint(m_mousePostion);//转换成世界坐标
// 因为是2D,用不到z轴。使将z轴的值为0,这样鼠标的坐标就在(x,y)平面上了
m_mousePostion.z = ;
//根据鼠标位置翻转角色
if (m_mousePostion.x-transform.position.x < && m_FacingRight == )
{
Flip();
}
else if (m_mousePostion.x - transform.position.x > && m_FacingRight == -)
{
Flip();
} #region 左右移动相关
//获取键盘输入,表示左右输入 按键A或D或向左箭头向右箭头
m_MoveInputDirection = Input.GetAxisRaw("Horizontal");
#endregion
#region 跳跃相关
//判断是否按下跳跃键,并角色在地面上
if (Input.GetButtonDown("Jump")&&m_Grounded)
{
m_Grounded = false;//跳跃后,是否在地面为否
m_PlayerRb.velocity = Vector2.up * m_JumpForce;//角色向上跳跃
}
BetterJump();
#endregion
}
private void FixedUpdate()
{
if (m_MoveInputDirection!=)//表示玩家按下了左右方向键
{
//移动角色
Vector3 targetVelocity = new Vector2(m_MoveSpeed * m_MoveInputDirection, m_PlayerRb.velocity.y);
m_PlayerRb.velocity = Vector3.SmoothDamp(m_PlayerRb.velocity, targetVelocity, ref m_Velocity, m_MovementSmoothing);
}
}
/// <summary>
/// 角色翻转
/// </summary>
void Flip()
{
m_FacingRight *= -;
transform.Rotate(0.0f, 180.0f, 0.0f);
} /// <summary>
/// 角色跳跃,长按高跳,短按低跳
/// </summary>
private void BetterJump()
{
//角色跳起后下落阶段
if (m_PlayerRb.velocity.y<)
{
m_PlayerRb.velocity += Vector2.up * Physics2D.gravity.y * jumpFactor*Time.deltaTime;//不停的增加重力,手感更强使游戏更有可玩性
}
else if (m_PlayerRb.velocity.y>&&!Input.GetButton("Jump"))//角色跳起阶段,并放弃按跳跃键
{
m_PlayerRb.velocity += Vector2.up * Physics2D.gravity.y * jumpFactor * Time.deltaTime;
}
} private void OnDrawGizmos()
{
//地面检测方法划线显示,便于观察
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(m_GroundCheck.position, groundCheckRadius); } }
角色移动优化【Unity2D自学之路】的更多相关文章
- 【转】JAVA自学之路
JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...
- 一个「学渣」从零开始的Web前端自学之路
从 13 年专科毕业开始,一路跌跌撞撞走了很多弯路,做过餐厅服务员,进过工厂干过流水线,做过客服,干过电话销售可以说经历相当的“丰富”. 最后的机缘巧合下,走上了前端开发之路,作为一个非计算机专业且低 ...
- 【转】Java自学之路——by马士兵
作者:马士兵老师 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟 ...
- Java自学之路(新手一定要看)
Java自学之路(新手一定要看) 转自尚学堂 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游 ...
- [感悟]马士兵Java自学之路——(精华版)
JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...
- 马士兵_JAVA自学之路(为那些目标模糊的码农们)
转载自:http://blog.csdn.net/anlidengshiwei/article/details/42264301 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. ...
- 我的.NET自学之路
我第一门语言接触的并不是.net,而是php刚学php感觉还好,但是一学到后面就有一点头晕乎乎的,我感觉没有一个好的编写php代码的编辑器.而且php是弱类型语言,感觉起来没有像c,java,c#这些 ...
- 聊聊我的 Java 自学之路
最近经常在知乎收到类似『没基础,java 如何自学』.『怎么才能掌握编程』等等问题,再加上发现高中同学也在自学.有感而发,讲讲我的自学之路. 1.1. 大学 高考没正常发挥,考入一所二流的学校,当时分 ...
- 【我的前端自学之路】【HTML5】.html和.htm的区别
以下为自学笔记内容,仅供参考. 转发请保留原文链接:https://www.cnblogs.com/it-dennis/p/10508171.html .htm 和 .html 的区别 .htm 和 ...
随机推荐
- Day06 - Fetch、filter、正则表达式实现快速古诗匹配
Day06 - Fetch.filter.正则表达式实现快速古诗匹配 作者:©liyuechun 简介:JavaScript30 是 Wes Bos 推出的一个 30 天挑战.项目免费提供了 30 个 ...
- a标签嵌套href默认行为与子元素click事件存在影响
2018-08-07 Question about work 开发过程中遇到问题,简单写个demo 运行环境为Chrome 68 描述一下这个问题,当<a>标签内部存在嵌套时, 父元素&l ...
- FCC 成都社区·前端周刊 第 7 期
01. ES2016, 2017, 2018 中的新特性 文章介绍了 18 个 ECMAScript 2016,2017 和 2018 中新增加的特性,这些特性已被加入到 TC39 提案中.包括Arr ...
- 『配置』服务器搭建 Office Online Server2016 实现文档预览
博主有话说:这个过程我遇到了很多错误,所以出了一个错误整理文章,所以当你在配置过程中遇到了问题,可以先去这篇文章里找找!加油! 先打开我吧:https://www.cnblogs.com/pukua/ ...
- frida报错frida.InvalidArgumentError: device not found问题解决方案
一.问题描述 python安装好frida框架后,在安卓端启动了frida-server,启动要hook的应用,在cmd中执行python脚本,报错frida.InvalidArgumentE ...
- AI广度优先搜索算法,项目实战北京地图/贪心学院
广度优先搜索算法详解地铁路线 北京很大,附上地铁图,不要迷路!!! 作为一个程序员,在北京,你很有可能住在回龙观地区,经常从龙泽上地铁,然后畅游北京. 当有一天,你老家的朋友来北京了,希望你能够带她去 ...
- java编写非对称加密,解密,公钥加密,私钥解密,RSA,rsa
非对称加密已经被评为加密标准,主要包含(公钥加密私钥解密,或者私钥加密公钥解密)本文主要讲解的是如何用java生成 公钥和私钥并且 进行字符串加密 和字符串解密 //如需要代码copy如下 im ...
- ASP.NET Core 快速入门(Razor Pages + Entity Framework Core)
引子 自从 2009 年开始在博客园写文章,这是目前我写的最长的一篇文章了. 前前后后,我总共花了 5 天的时间,每天超过 3 小时不间断写作和代码调试.总共有 8 篇文章,每篇 5~6 个小结,总截 ...
- Oracle - 坏块修复(一)
一.概述 本文将介绍如何模拟坏块,以及出现坏块该如何修复.实验分为以下几个步骤. 1. 表出现坏块 2. 索引出现坏块 二.环境准备 本实验都是在oracle 11G归档模式下进行. 1. 准备相关表 ...
- Python基础类型(1)
整数 整数在Python中的关键字用int来表示; 整型在计算机中运于计算和比较 在32位机器上int的范围是: -2**31-2**31-1,即-2147483648-2147483647 在64 ...