首页 > Unity 2D物体移动

Unity 2D物体移动

一,设置

 

 二,脚本

 

1,PlayerController 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class PlayerController : MonoBehaviour {private Rigidbody2D m_rg;public float MoveSpeed;public float JumpSpeed;//在角色下添加一个空物体//设置一个跳跃监测点public Transform CheckPoint;//设置一个跳跃监测半径public float CheckRadius;//设置一个跳跃监测层---角色与地面的检测public LayerMask WhatIsGround;//角色默认是否着地--truepublic bool isGround;private Animator Anim;//存储复活点的位置信息public Vector2 RespawnPosition;public LevelManager theLevel;void Start () {m_rg = gameObject.GetComponent();Anim = gameObject.GetComponent();//游戏刚开始时,玩家的重生点,就是当前的初始位置点RespawnPosition = transform.position;theLevel = FindObjectOfType();}// Update is called once per framevoid Update () {//
        isGround = Physics2D.OverlapCircle(CheckPoint.position, CheckRadius, WhatIsGround);//m_rg.gameObject.transform.rotation= Quaternion.identity;//------------------Input.GetAxisRaw没有小数值,只有整数,不会产生缓动------------------//角色水平移动//按住D键,判断如果大于0,则向右开始移动if (Input.GetAxisRaw("Horizontal") > 0){m_rg.velocity = new Vector2(MoveSpeed, m_rg.velocity.y);//设置自身缩放的值transform.localScale = new Vector2(1f,1f);}//角色水平移动//按住A键,判断如果小于0,则向左开始移动else if (Input.GetAxisRaw("Horizontal") < 0){m_rg.velocity = new Vector2(-MoveSpeed, m_rg.velocity.y);//如果new Vector2(-1f, 1f)  x值为负数,则图片进行反转显示transform.localScale = new Vector2(-1f, 1f);}else//角色水平移动//松开按键,判断如果等于0,则停止移动
        {m_rg.velocity = new Vector2(0, m_rg.velocity.y);}//角色按下空格键实现跳跃//禁止二连跳//要先判断角色是否在地面上,在地面上可以跳,不在地面上则不能跳if (Input.GetButtonDown("Jump")&& isGround){m_rg.velocity = new Vector2(m_rg.velocity.x,JumpSpeed);}Anim.SetFloat("Speed", m_rg.velocity.x);Anim.SetBool("Grouned", isGround);}private void OnTriggerEnter2D(Collider2D collision){if (collision.tag=="KillPlane"){//gameObject.SetActive(false);//使当前玩家的位置点为,保存的复活点位置//transform.position = RespawnPosition;
theLevel.Respawn();}//角色与当前的复活点进行碰撞检测//把当前角色的位置信息,设置为重生的复活点if (collision.tag == "CheckPoint"){RespawnPosition = collision.transform.position;}}/// /// 实现角色跟随移动平台一起运动/// 把角色的父物体设置为移动平台/// /// private void OnCollisionEnter2D(Collision2D collision){Debug.Log("碰撞到的那个吊毛叫什么名字:"+ collision.gameObject.name);if (collision.gameObject.tag == "MovePlatForm"){transform.parent = collision.transform;Debug.Log("碰撞到的那个吊毛的父物体什么名字:" + transform.parent);}}private void OnCollisionExit2D(Collision2D collision){if (collision.gameObject.tag == "MovePlatForm"){transform.parent = null;}}
}

 

 

 2,MovePlatFromController 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;/// 
/// 平台移动脚本
/// 
public class MovePlatFromController : MonoBehaviour {//要移动的物体public GameObject PlatForm;//要移动物体开始的点public Transform StartPoint;//要移动物体结束的点public Transform EndPoint;//要移动物体的移动速度public float MoveSpeed;//要移动到的目标点public Vector2 target;void Start () {target = EndPoint.position;}// Update is called once per framevoid Update () {//把物体移动到指定的位置点上PlatForm.transform.position = Vector2.MoveTowards(PlatForm.transform.position, target, MoveSpeed*Time.deltaTime);//实现物体来回移动if (PlatForm.transform.position == EndPoint.position){target = StartPoint.position;}if (PlatForm.transform.position == StartPoint.position){target = EndPoint.position;}}
}

 

转载于:https://www.cnblogs.com/yueqingli/p/10125555.html

更多相关:

  • navigator.userAgent.toLowerCase().includes("mobile")//true代表就是移动端  ...

  • 因为自己也是个linuxer 熟练运用VIM是必须的,恰好学长杰哥对此有研究, 转来给大家分享。对此表达对杰哥的敬意。 有好东西分享给大家才能相互学习是吧。 要做个Linuxer,VIM的操作是必须就跟手指头盲打键盘那么熟练。 首先说下Vim的两种最常用模式,这是对菜鸟说的:),普通模式和输入模式,在普通模式下所有的按键都是命令,在...

  • 2019独角兽企业重金招聘Python工程师标准>>> 介绍一些针对移动设备常用的HTML5开发技巧。 从web开发转向移动开发 视野范围的转变 这点是针对可显示的内容区域而言的,PC的内容区域相对于移动设备的内容区域来说,那已经算相当丰富了。如果说PC可以是多视图区域的,那么移动应用更多的是单视图,使得我们开发的应用视野...

  • 在.Net Framework中,配置文件一般采用的是XML格式的,.NET Framework提供了专门的ConfigurationManager来读取配置文件的内容,.net core中推荐使用json格式的配置文件,那么在.net core中该如何读取json文件呢?1、在Startup类中读取json配置文件1、使用Confi...

  •   1 public class FrameSubject extends JFrame {   2    3   …………..   4    5   //因为无法使用多重继承,这儿就只能使用对象组合的方式来引入一个   6    7   //java.util.Observerable对象了。   8    9   DateSub...

  • 本案例主要说明如何使用NSwag 工具使用桌面工具快速生成c# 客户端代码、快速的访问Web Api。 NSwagStudio 下载地址 比较强大、可以生成TypeScript、WebApi Controller、CSharp Client  1、运行WebApi项目  URL http://yourserver/swagger 然后...

  •   在绑定完Action的所有参数后,WebAPI并不会马上执行该方法,而要对参数进行验证,以保证输入的合法性.   ModelState 在ApiController中一个ModelState属性用来获取参数验证结果.   public abstract class ApiController : IHttpController,...

  • 1# 引用  C:AVEVAMarineOH12.1.SP4Aveva.ApplicationFramework.dll C:AVEVAMarineOH12.1.SP4Aveva.ApplicationFramework.Presentation.dll 2# 引用命名空间, using Aveva.Applicati...

  • 从头到尾创建低多边形角色。 你会学到: Blender界面的基础。 基本建模技术。 如何遵循字符引用? 如何创造和塑造自己的角色(不同风格、发型和服装)。 纹理字符。 索具和动画介绍(用于你的游戏引擎或动画)。 调整您下载的资产包角色,以创建新的不同角色。 MP4 |视频:h264,1280×720 |音频:AAC,44.1...

  •   Ultimate character creation in Blender: From beginner to pro 流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,48.0 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确) |大小解压后:24.8 GB 含建模参考图 |时长:30...

  • 【强推】Blender制作逼真人物角色完整案例视频教程 【强推】Blender制作逼真人物角色完整案例视频教程 时长53h 30m 1280X720 MP4 含教程工程文件 共九大模块 130小节课程 教程大小:12.9G 语言:英语+机译中文字幕(含原英文字幕文件) Victory3D – Complete Guide...

  • 1.简介 ​ 基于角色的权限访问控制(Role-Based Access Control)作为传统访问控制(自主访问,强制访问)的有前景的代替受到广泛的关注。在RBAC中,权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。这就极大地简化了权限的管理。在一个组织中,角色是为了完成各种工作而创造,用户则依据它的责任和资格来...