在unity2d 平台跳跃里,怎么让2d的跳跃变得平滑自然

扫码下载官方App
学习过该课程的人还学习过:
其他联系方式
所属系列课程
网易公司()旗下实用技能学习平台。与优秀讲师、专业机构、院校合作,为您提供海量优质课程,以及创新的在线学习体验,帮助您获得全新的个人发展和能力提升。
关注我们:
& 网易公司 版权所有
人人都会做游戏-Unity5.x创造2D手机游戏,IT与互联网,移动开发,InsideRIA,创造游戏,可以拉近你与他人的距离,也是你迈向成功的第一步
你可以使用Unity创造任你所想的2D或3D游戏,你可以把它设计的极致简约,也可以把它打造的美轮美奂毫无瑕疵,只需要你轻触手指就可以把你的游戏发布到任何平台,Unity可以帮助你整合服务加速开发流程,优化游戏性能,还可以帮助你拉近你与你的粉丝的距离,帮助你迈向成功。
本教程以完整的游戏实例为主线,循序渐进的在游戏的创造过程中教授Unity的使用方法与技巧,完整的诠释了一个游戏从零到有的全过程,学员只有一步一步的跟上教程的脚步,就可以彻底的领略Unity的创造魅力。
适用人群:了解C#或Javascript的程序员,大学生,游戏爱好者,美术设计师,Unity初学者,想进入游戏行业的人Unity3D中的Texture2D纹理失真解决办法 | Unity3D教程手册
我的图书馆
Unity3D中的Texture2D纹理失真解决办法 | Unity3D教程手册
& & & & & &Unity3D中的Texture2D纹理失真解决办法
Unity3D中Texture2D纹理类型绘制代码如下:
var img : Texture2D;
function OnGUI()
GUI.DrawTexture(&Rect(&left, top, width, height&), img&);
绘制后会发现图像明显发虚,其实就是纹理在被载入是自动缩放成了2的n次方大小(power of 2)。在Project面板中找到原始文件(测试纹理大小为 40×100)。
Unity3D中的Texture2D纹理失真解决办法
结果将图片大小自行缩放。导致了纹理失真。解决方法如下:
Unity3D中的Texture2D纹理失真解决办法
首先将Texture Type选择为Advaced,在面板内弹出新的选项。将紧挨着他下面的Non power of 2的选项设置为None,一定要选择下面的Apply,接受修改,否则没有效果,这时可以看到下面的预览框内的纹理大小为实际的物理文件尺寸。
Unity3D中的Texture2D纹理失真解决办法
重新运行程序,便可以看到正常的显示效果了。
TA的最新馆藏
喜欢该文的人也喜欢Unity 实现2D游戏中物体延自定义路径反复移动
Unity 实现2D游戏中物体延自定义路径反复移动
Unity版本为5.3.2
首先随便新建一个2D游戏场景
在场景中新建一个空物体名字为Path,再创建三个子物体分别为Start,Mid,End,改变icon图标(容易设计)
首先实现路径点间的画线
using UnityE
using System.C
using System.Collections.G
using System.L
public class PathDefinition : MonoBehaviour {
public Transform[]//路径点集合
public IEnumerator GetPathsEnumerator(){//自定义迭代器(用来返回路径点)
if (points == null || points.Length & 1)
var direction = 1;//移动方向
int index = 0;
while (true) {
yield return points [index];
if (points.Length == 1)
if (index &= 0)
direction = 1;
else if (index &= points.Length - 1)
direction = -1;
index = index +
public void OnDrawGizmos(){//重写OnDrawGizmos实现在scene视图中画线
if (points==null||points.Length & 2)
var pt = points.Where (t=&t!=null).ToList();//使用的Linq语言集成查询,找出路径点集合中不为空的点
if (pt.Count & 2)
for (int i = 1; i & pt.C i++) {
Gizmos.DrawLine (pt[i-1].position,pt[i].position);//画线
using UnityE
using System.C
using System.Collections.G
public class FollowPath : MonoBehaviour {
public enum FollowType{//定义一个移动类型的枚举
MoveTowards,
public FollowType type = FollowType.MoveT//默认为直接朝向移动
public PathD
public float speed = 1;//移动速度
public float maxDistanceTOGoal = .1f;//判断物体是否到达某个路径点
private IEnumerator _currentP//声明一个迭代器
void Start(){
if (path == null) {
Debug.Log (&Path cannot be null&,gameObject);
_currentPoint = path.GetPathsEnumerator ();//获得迭代器实例
_currentPoint.MoveNext ();//MoveNext ()会执行代码到迭代器中yiled 语句处停止(包括yiled 语句)
if (_currentPoint.Current == null)//Current代表迭代器当前返回值
transform.position = _currentPoint.Current.//默认物体初始位置为路径点的第一个位置
void Update(){
if (_currentPoint == null || _currentPoint.Current == null)
if (type == FollowType.MoveTowards) {//使用Vector3.MoveTowards移动
transform.position = Vector3.MoveTowards (transform.position, _currentPoint.Current.position, Time.deltaTime * speed);
else if(type==FollowType.Lerp){//使用Vector3.Lerp移动
transform.position = Vector3.Lerp(transform.position,_currentPoint.Current.position,Time.deltaTime*speed);
var distanceSquared = (transform.position - _currentPoint.Current.position).sqrM
if (distanceSquared & maxDistanceTOGoal * maxDistanceTOGoal)//如果物体与某个路径点的距离的平方小于规定的最大值,则获取下一个路径点
_currentPoint.MoveNext ();
在Path上挂上PathDefinition脚本,将三个路径点挂上去,在Move物体上挂上FollowPath脚本,将Path拖到FollowPath上,然后运行}

我要回帖

更多关于 unity2d 平台跳跃 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信