自学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自学之路】的更多相关文章

  1. 【转】JAVA自学之路

    JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...

  2. 一个「学渣」从零开始的Web前端自学之路

    从 13 年专科毕业开始,一路跌跌撞撞走了很多弯路,做过餐厅服务员,进过工厂干过流水线,做过客服,干过电话销售可以说经历相当的“丰富”. 最后的机缘巧合下,走上了前端开发之路,作为一个非计算机专业且低 ...

  3. 【转】Java自学之路——by马士兵

    作者:马士兵老师 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟 ...

  4. Java自学之路(新手一定要看)

    Java自学之路(新手一定要看) 转自尚学堂 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游 ...

  5. [感悟]马士兵Java自学之路——(精华版)

    JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向 ...

  6. 马士兵_JAVA自学之路(为那些目标模糊的码农们)

    转载自:http://blog.csdn.net/anlidengshiwei/article/details/42264301 JAVA自学之路 一:学会选择 为了就业,不少同学参加各种各样的培训. ...

  7. 我的.NET自学之路

    我第一门语言接触的并不是.net,而是php刚学php感觉还好,但是一学到后面就有一点头晕乎乎的,我感觉没有一个好的编写php代码的编辑器.而且php是弱类型语言,感觉起来没有像c,java,c#这些 ...

  8. 聊聊我的 Java 自学之路

    最近经常在知乎收到类似『没基础,java 如何自学』.『怎么才能掌握编程』等等问题,再加上发现高中同学也在自学.有感而发,讲讲我的自学之路. 1.1. 大学 高考没正常发挥,考入一所二流的学校,当时分 ...

  9. 【我的前端自学之路】【HTML5】.html和.htm的区别

    以下为自学笔记内容,仅供参考. 转发请保留原文链接:https://www.cnblogs.com/it-dennis/p/10508171.html .htm 和 .html 的区别 .htm 和 ...

随机推荐

  1. 2019年后,Java岗面试快速突击指南

    大家好.这篇文章给大家分享一下如何获得一个可以去参加面试的最小可行知识(Minimal Viable Knowledge)!我自己在就基本上靠文章中的策略在找实习的时候拿到了头条阿里的offer.所以 ...

  2. TensorFlow Serving实现多模型部署以及不同版本模型的调用

    前提:要实现多模型部署,首先要了解并且熟练实现单模型部署,可以借助官网文档,使用Docker实现部署. 1. 首先准备两个你需要部署的模型,统一的放在multiModel/文件夹下(文件夹名字可以任意 ...

  3. sublime text3 搭建c++/c环境

    sublime搭建的c++/c使用很方便,实用性很强,自己阅览了无数的博客,csdn,博客园的都看了,最后还是自己摸索着搭建成功了,如果觉得还不错请给个评论谢谢.(提前声明本人专利不允许转载!!!!) ...

  4. node代理遇到的坑记

    在进行前端mock地址代理时候,进行了webpack的node反向代理: 实际mock地址是:http://10.118.183.10/mock/hb/startwork/openredpacket ...

  5. Matplotlib数据可视化(6):饼图与箱线图

    In [1]: from matplotlib import pyplot as plt import numpy as np import matplotlib as mpl mpl.rcParam ...

  6. Java实现GBK转码到UTF-8(文件)

    所以,虚无的悲叹,寻根问底仍是由于肉身的圈定.肉身蒙蔽了灵魂的眼睛,单是看见要回那无中去,却忘了你原是从那无中来.                                            ...

  7. go 广度搜索案例(迷宫)

    package main import ( "fmt" "os" ) /* *将文档结构读入到切片中(二维数组) *row, col 行数 列数 (文档第一行数 ...

  8. 小程序post请求,后台接收不到数据的解决方法

    wx.request({ url: 'myurl', method:'POST', dataType:'json', data: { mydata:mydata }, success(res) { c ...

  9. XiaoQi.Study项目(一)

    项目地址:https://github.com/xiaoqiyaozou1/XiaoQi.Study 感谢:“老张的哲学”.“晓晨”.“杨旭”等大佬的知识分享 一.项目创建 vs 2019 创建 as ...

  10. MySQL 【教程二】

    MySQL 创建数据表 创建MySQL数据表需要以下信息: 表名 表字段名 定义每个表字段 语法 以下为创建MySQL数据表的SQL通用语法: # CREATE TABLE table_name (c ...