Unity3D游戏学习笔记3

写一篇短文回答以下问题。如是做程序,请写步骤,贴代码并解释:

一.在 Unity 中,实现运动的常见手段有哪些(自少四种)。请用一个物体的运动,用不 同不同方法实现。(如:修改 Transform 属性,使用向量 Vector3 的方法...)

 方法 1:用函数实现简单运动 

PublicclassMoveLeft:MonoBehaviour{ 

Void start(){} 

Void update(){

this.transform.position+=Vector3.left*Time.deltaTime;

方法 2:用 Transform 组件 

Public function Translate(translation:Vector3,relativeTo:Space=Spaze.Self):void; 

transform.position 可以更快实现移动。 

方法 3:通过 Rigidbody 组件移动物体,如 

function FixedUpdate(){ 

rigidbody.AddForce(Vector3.up*10); 

方法 4:通过 CharacterController 组件移动物体 

public class ExampleClass:MonoBehaviour{ 

public float speed=3.0F; 

public float rotateSpeed=3.0F; 

void Update(){ 

CharacterControllercontroller=GetComponent<CharacterController>(); 

transform.Rotate(0,Input.GetAxis("Horizontal")*rotateSpeed,0); 

Vector3 forward=transform.TransformDirection(Vector3.forward); 

float curSpeed=speed*Input.GetAxis("Vertical"); 

controller.SimpleMove(forward*curSpeed); } }


二.写一个程序,实现一个完整的太阳系, 其他星球围绕太阳的转速必须不一样,且不在 一个法平面上。 

1. 将太阳系所有星球延 X 轴依次排列开,很容易知道行星的旋转法线是(0,Y,Z),因此 要确保行星不在一个法平面上,只需确保 Y/Z 不相等即可。 

2. 使用 Transform 对象的 RotateAround 方法,该方法接受 3 个参数,第一个是围绕的旋转点, 在这里即太阳的位置,第二个是旋转的法向量,在这里法向量在(0,Y,Z)平面上,第三 个是旋转的速度。为了方便设置旋转中心和速度,我将它们设置成了公有变量。 

public class rotate:MonoBehaviour{ 

public Transformorigin; 

public float speed=20; floatry,rz; 

void Start(){ 

ry=Random.Range(1,360); 

rz=Random.Range(1,360); 

void Update(){

Vector3axis=newVector3(0,ry,rz); 

this.transform.RotateAround(origin.position,axis,speed*Time.deltaTime);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值