Unity3D人物控制代码,为什么人物跳不起来!!只能实现左右移动

作者&投稿:箕彼 (若有异议请与网页底部的电邮联系)
关于Unity3D 这是控制主角移动和规定边界的一段代码,请问为什么不按按键主角就自己~

假设你这个2D游戏用的是X-Y平面,而且前面你通过水平和垂直偏移(键盘或手柄)的计算速度向量的过程都是按X-Y平面做的,可是为什么到最后一句用钳位计算实际位置的时候,用的是X-Z平面?问题就出现在这里,我粗略的写:
你的是:
position=new Vector3(Clamp(x轴位置和边界), 0, Clamp(y轴位置和边界))
应该是:
position=new Vector3(Clamp(x轴位置和边界), Clamp(y轴位置和边界), 0)
才对吧

1、 利用层级关系,触碰时,方块是角色的父级,离开解除关系
void OnCollisionStay(Collision other)
{
other.gameObject.transform.parent = transform;
}

void OnCollisionExit(Collision other)
{
other.gameObject.transform.parent = null;
}
2、利用位移,触碰时,角色的位移和方块移动的位移一样
using UnityEngine;
using System.Collections;

public class Move : MonoBehaviour
{
private Transform juese;

void Update()
{
float distanceX = Input.GetAxis("Horizontal") * Time.deltaTime;
if (juese != null)
{
juese.Translate(distanceX, 0, 0);
}
transform.Translate(distanceX, 0, 0);
}

void OnCollisionStay(Collision other)
{
juese = other.gameObject.transform;
}

void OnCollisionExit(Collision other)
{
juese = null;
}
}
参数要微调下

首先你好像有两个参数来标记人物是否在地上 state和isGround。state并不完整,也没什么作用。那就当作你用isGround来标记人物是不是在地上。

isGround初始化为false,但是你从来没有给它赋值过true。程序根本无法判断Input.GetButtonDown("Jump");


还有些小问题都没这个逻辑问题严重




nity3d2017,easy touch5在电脑上能用,安装在手机中不能动?是少了什么...
在LeftJoyStick的ETC Joystick-Axes properties中的Horizontal axis-General setting中将要控制的人物Player拖入框中,action选translate,Affected action选 X 同理下面对Vertical axis作同样设置,只是Affected Axis改成Y 到现在为止,就可以通过左摇杆控制人物移动了,人物移动太快怎么办,Speed调慢点即可。下面...

nity3d跨平台原理是什么?
菜鸟在线觉得所有的平台打包程序里带个mono runtime,ios之外的平台是jit,ios平台是编译时把IL代码转为目标码,也就是Full AOT。总的来说,跨平台目前确实靠mono。

MAYA导出布料动画需要什么插件吗?? 想在nity3D里面读取...需要导出插...
在maya中用布料解算做好的布料动画,要想导入到别的三维软件中来识别的话,是不需要插件的,解决方法:调整好布料的参数,做好布料动画的缓存,然后选择布料的模型,做烘焙关键帧动画,这个时候的布料特效模型就会转换成普通的模型动画了,然后把布料的特效节点和力场删除,选择烘焙好的模型,导出为FBX格式...

uinity3d 摄像头前怎么加一个矩形边框
通过按 shift+F 组合键以及通过视点 (POV) 视口标签菜单,可以切换活动视口的安全框状态。可以使用“视口配置”对话框中的“安全框”面板调整参数。当安全框在视口中处于活动状态,并将位图图像指定为背景,同时启用“显示背景”时,图像将限定在安全框的“现场”区域中。如果在渲染时使用背景图像,则可以...

上林县13812134923: 怎么通过程序控制unity3d人物动作 -
良竹抗病: unity3d里面人物动作,是通过模型动画来实现的,就是说,你需要通过程序来控制人物模型的动画播放.在unity中,对于动画控制这一块,有专门的工具,叫做animator动画控制器,有关内容可以查阅一下资料.举个简单的例子,比如我在animator中设置两个动画状态,并设置切换条件为int a=0;那么你要做的就是在程序中,改变a的值,当a=0的时候,动画就会进行切换,完成动作的改变.unity的动作形式就是多种不同的动画状态组成的,而你需要用程序去控制条件来切换这些动画,这个形式就是动画状态机.

上林县13812134923: 关于Unity3D 这是控制主角移动和规定边界的一段代码,请问为什么不按按键主角就自己 -
良竹抗病: 假设你这个2D游戏用的是X-Y平面,而且前面你通过水平和垂直偏移(键盘或手柄)的计算速度向量的过程都是按X-Y平面做的,可是为什么到最后一句用钳位计算实际位置的时候,用的是X-Z平面?问题就出现在这里,我粗略的写:你的是:position=new Vector3(Clamp(x轴位置和边界), 0, Clamp(y轴位置和边界)) 应该是:position=new Vector3(Clamp(x轴位置和边界), Clamp(y轴位置和边界), 0)

上林县13812134923: unity3d为什么角色控制器isgrounded总是返回false -
良竹抗病: 答:陆碰撞 指形 形自身带碰撞给要碰物体 加钢体 引力 碰撞全

上林县13812134923: Unity角色控制 -
良竹抗病: 你这个代码的意思是,按transform.right这个方向前进,百这个方向代表的是模型坐标的x轴,度在unity就是红色的箭头,注意,是内模型的本身坐标,不是右上角显示的世界坐标轴,你把这transform.right改为容transform.forward试试吧

上林县13812134923: unity3d关于角色面向控制方向JS代码是怎么写的? -
良竹抗病: 人物角色的朝向那个点(或者面向哪个点):transform.LookAt() 人物向方向移动:transform.Translate(Vector3.forward);//前 transform.Translate(Vector3.back);//后 transform.Translate(Vector3.left);//左 transform.Translate(Vector3.right);//右 代码示例:var speed:float =2.0;//移动速度 transform.Translate(Vector3.forward*speed *Time.deltaTime);

上林县13812134923: 新手求助 unity中用按钮控制人物行走,我应该怎么将按钮与人物关联 -
良竹抗病: 从你第二张截图的源代码中看出是this.transform 也就是这个脚本所在的GameObject 的坐标变换,那么将这个脚本作为 Component 加到你的被控制角色 GameObject 上就行了,选中角色的GameObject 在 Inspector 面板添加这个源代码 Component,前提是你这个 Button Left 类是 MonoBehavior 的子类,看看 Red Button 是不是

上林县13812134923: unity3d为什么人物模型的position的3个值一直在变化?有什么可能的原因? -
良竹抗病: 首先,人形角色一般是不需要加刚体的,你想做碰撞就用CharacterController和move函数结合,如果不想让刚体往下掉,可以在地面添加碰撞collider,初始位置要高于地面,角色的碰撞collider是不能去的,去掉后只有刚体,如果加重力的话就会往下掉

上林县13812134923: unity3d character controllers第三人陈怎么使用? -
良竹抗病: unity3d 自带的角色控制器有第一人称和第三次人称,第三人称控制方法:W:前进;S:后退;A:左旋转,D右旋转, 鼠标控制视觉. 当然你也可以从外部导入第三人模型,自己编写脚本进行控制.

上林县13812134923: 如何学习unity3d中的控制角色移动 -
良竹抗病: 使用平移方法,比如向前移动:Transform.translate(vector.forward);

上林县13812134923: unity中的角色控制器是什么意思 -
良竹抗病: 就是用于控制角色的一个特殊的碰撞器,自带有爬坡、上台阶的设置等等

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网