Unity官方教程—space shooter练习日记之脚色移动
2017-09-27 21:36
405 查看
从官方下载下来的资源,代码通过自主视频获得,还是得感谢下58
首先是传统的虚拟轴的使用 float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
这里的Horizontal以及Vertical可以在unity中的Edit---project seeting ----Input找到,不止是有预设的xyz轴变化,还有Jump,同时支持自我定义。
接下来的方法有很多种,这是本次试用的 Vector3 movement = new vector3(moveHorizontal , 0.0f , move Vertical);
GetCompent<Rigdibody>().velocity = movement*speed;
上面的这些已经有过多次使用经历,而接下来的才是今天最大的收获
[System.Serializable]
public class Bondary
{
//定义边界值
public float xMin;
public float xMax;
public float zMin;
public float yMax;
}
public Bondary bondayr
这里将已经定义好的公共变量x和z轴的极限定义为了类,就使用来说复杂程度增高了,但其整洁的写法使得它不得不被使用,便于检查,整理。
最后一步,使得玩家在没有物体阻拦的情况下依然不会超过边界
Getcompent<Rigidbody>().position = new Vector3(Mathf.Clamp(Getcompent<Rigidbody>().position.x,bondary.xMin,bondary.xMax) , 0.0f, Math.Clamp(Getcompent<Rigidbody>().position.z , bondary.zMin , bondary.zMax));
这里的书写量较大,为纯手打,建议以官方视频为准
最后说一点,注意在unity中对于max以及min值的设置,如果正负错误会出现鬼畜的情况。
祝我们成功
首先是传统的虚拟轴的使用 float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
这里的Horizontal以及Vertical可以在unity中的Edit---project seeting ----Input找到,不止是有预设的xyz轴变化,还有Jump,同时支持自我定义。
接下来的方法有很多种,这是本次试用的 Vector3 movement = new vector3(moveHorizontal , 0.0f , move Vertical);
GetCompent<Rigdibody>().velocity = movement*speed;
上面的这些已经有过多次使用经历,而接下来的才是今天最大的收获
[System.Serializable]
public class Bondary
{
//定义边界值
public float xMin;
public float xMax;
public float zMin;
public float yMax;
}
public Bondary bondayr
这里将已经定义好的公共变量x和z轴的极限定义为了类,就使用来说复杂程度增高了,但其整洁的写法使得它不得不被使用,便于检查,整理。
最后一步,使得玩家在没有物体阻拦的情况下依然不会超过边界
Getcompent<Rigidbody>().position = new Vector3(Mathf.Clamp(Getcompent<Rigidbody>().position.x,bondary.xMin,bondary.xMax) , 0.0f, Math.Clamp(Getcompent<Rigidbody>().position.z , bondary.zMin , bondary.zMax));
这里的书写量较大,为纯手打,建议以官方视频为准
最后说一点,注意在unity中对于max以及min值的设置,如果正负错误会出现鬼畜的情况。
祝我们成功
using System.Collections; using System.Collections.Generic; using UnityEngine; public class PlayerMove : MonoBehaviour { [System.Serializable] public class Bondary { //定义边界值 public float xMin; public float xMax; public float zMin; public float yMax; } public float speed; public Bondary bondary; // Use this for initialization void FixedStart () { } // Update is called once per frame void Update () { //角色移动 float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = Input.GetAxis("Vertical"); Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical); GetComponent<Rigidbody>().velocity = movement * speed; //使玩家不超越边界值 GetComponent<Rigidbody>().position = new Vector3(Mathf.Clamp(GetComponent<Rigidbody>().position.x,bondary.xMin,bondary.xMax), 0.0f, Mathf.Clamp(GetComponent<Rigidbody>().position.z,bondary.zMin,bondary.yMax)); } }
相关文章推荐
- Unity官方实例教程 Space Shooter
- Unity官方实例教程 Space Shooter(太空射击游戏)
- unity官方教程Space shooter学习笔记-01
- Unity官方实例教程 Space Shooter
- 对《[Unity官方实例教程 秘密行动] Unity官方教程《秘密行动》(十二) 角色移动》的一些笔记和个人补充,解决角色在地形上移动时穿透问题。
- unity官方教程Space Shooter 学习笔记
- unity官方教程space shooter 学习文档
- Unity Graphics (Unity 图形渲染 ) 官方教程文档笔记系列之五
- Unity性能优化(3)-官方教程Optimizing garbage collection in Unity games翻译
- Unity教程之-unity3d移动平台性能优化专题(三):减少面数
- Unity官方教程 联机部分翻译
- Unity3D -- 性能优化(3)(官方教程Optimizing garbage collection in Unity games翻译)
- Unity3d--Space Shooter(官方教程)--学习感想(1)
- unity官方Car教程解析
- [置顶] unity官方内置网络unet的实例教程(一)
- Unity 5.3 官方VR教程(二) 创建第一个VR项目
- [置顶] Unity官方视频教程 自制中文字幕 1080p
- Unity性能优化(3)-官方教程Optimizing garbage collection in Unity games翻译
- Unity5.1 新的网络引擎UNET(九) UNET 官方推荐视频教程
- Unity3D -- 性能优化(4)(官方教程Optimizing graphics rendering in Unity games翻译)