Roll A Ball
Rolling A Ball是U3D官网入门教程的第一个 (地址戳这里),官网直接有学习视频看,作为一个入门级小demo,可以用来给熟悉一些U3D的开发操作。下面就我在入门学习的过程中遇到的问题和看法做个简单的记录吧。
代码上没什么难度,主要是一些类库不是很清楚,其次是思考方式的不同,和做网站开发的思路逻辑是不太一样的。
简单贴一些代码:
private void FixedUpdate()
{
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Vector3 vr3 = new Vector3(moveHorizontal,0.0f,moveVertical);
rb.AddForce(vr3 * speed);
}
说明一下AddForce:此时是根据用户的输入对Player对象施加一个在水平面的力,获取用户输入的方向,此处获得的moveHorizontal和moveVertical的值是在0-1之间,刚体获得力之后就会随之移动。(ps:为什么不直接更改对象的position,是为了让小球滚动起来)。
transform.Rotate(new Vector3(15,30,45)*Time.deltaTime);
Rotate方法,让物体以一定的方向旋转起来,我觉得可以理解为给他一个这个向量方向的力让他在原地旋转(个人理解,因为我也不是很了解)
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.CompareTag("Pick Up"))
{
other.gameObject.SetActive(false);
count++;
SetCountText();
if (count == 12)
{
WinText.text = "You Win";
}
}
}
这个地方是一个比较纠结的地方,即小球和立方体的碰撞,也就是Rigidbody和Collider的一些东西:
从刚体说起, Use Gravity这个是重力。物体是否受重力影响。Is Kinematic属性是确定刚体是否接受动力学模拟,此影响不仅包括重力感应,还包括速度、阻力、质量等的物理模拟。勾选了之后就无法对对象施加力(ps:AddForce方法就没用了),只能通过改变物体的position来进行移动。此处如果不勾选,物体会受重力作用下落,并且会穿过底部不会被底部阻挡,因为collider勾选了 Is Trigger,看到网上有人这样解释:当**此选项时,不会发生后续物理的反应。反之,发生后续的物理反应,Is Trigger 好比是一个物理功能的开关, 是要“物理功能”还是要“OnTrigger脚本”。
再说Collider,就是之前说的Is Trigger选项,上方已经说过了,开关后他会调用不同方法触发。
触发信息检测: 1.MonoBehaviour.OnTriggerEnter(Collider other) / MonoBehaviour.OnTriggerEnter2D(Collider2D other)当进入触发器
2.MonoBehaviour.OnTriggerExit(Collider other) / MonoBehaviour.OnTriggerExit2D(Collider2D other)当退出触发器
3.MonoBehaviour.OnTriggerStay(Collider other) / MonoBehaviour.OnTriggerStay2D(Collider2D other)当逗留触发器
碰撞信息检测:
1.MonoBehaviour.OnCollisionEnter(Collision collisionInfo) / MonoBehaviour.OnCollisionEnter2D(Collision2D collisionInfo)当进入碰撞器
2.MonoBehaviour.OnCollisionExit(Collision collisionInfo) / MonoBehaviour.OnCollisionExit2D(Collision2D collisionInfo)当退出碰撞器
3.MonoBehaviour.OnCollisionStay(Collision collisionInfo) / MonoBehaviour.OnCollisionStay2D(Collision2D collisionInfo) 当逗留碰撞器
然后就是MainCamera的问题了 这里需要让MainCamera跟随Player运动,在Start里计算两者的向量差,然后在LateUpdate里更新position。(测试在FixedUpdate和Update里调用效果一样,教程里为什么要在LateUpdate调用不是很清楚)。
基本就是这些东西了 ,现在还在学习阶段,有很多东西不是很清楚,同时希望自己可以把文章这个事情坚持下来。
上一篇: 从头开始学Java(二)
下一篇: 异常处理和捕获总结
推荐阅读
-
flash脚本ROLL制作女孩在丛中笑的gif动画效果
-
Ball
-
flash脚本roll应用 制作转动的光碟动画效果
-
HDU5955 H - Guessing the Dice Roll (AC自动机 + 高斯消元)
-
HDU - 4811 - Ball (思维)
-
Codeforces Round #277.5 (Div. 2)B??BerSU Ball_html/css_WEB-ITnose
-
Codeforces Round #277.5 (Div. 2)B??BerSU Ball_html/css_WEB-ITnose
-
优化-mysql使用roll up后出现Using temporary,Using filesort
-
flash脚本ROLL制作女孩在丛中笑的gif动画效果
-
如何分析SAP ABAP的SYSTEM_NO_ROLL运行时错误 ABAPSAPSAP云平台SAP Cloud PlatformSAP成都研究院