unity实现围绕星球走动

一、效果图
unity实现围绕星球走动_第1张图片
               

二、实现基本原理和代码

1、原理通过小球检测向右前方发送射线,给小方块施加右前方的力,同时检测小方块射线检测当前到球的碰撞位置进行旋转。

最后再给方块一个力让它球重心下落。
2、代码
[CSharp] view plain copy


  • void Update () {  
  •         GetComponent ().AddForce (transform.right * 50);  //此处会一直加速,速度过快会离心,所以我在属性面板                                                                                                             中把阻力也设置为了10  
  •   
  •         RaycastHit hitForward;              //此处射线检测要排除掉自身,检测到的应该是围绕旋转的中心球  

  •         if(Physics.Raycast (transform.position , -transform.up , out hitForward , 10 , RayCastLayerMask)) {  
  •                                                                                                    //开启此处会使旋转过渡会平滑点  
  •     // transform.rotation = Quaternion.Lerp (transform.rotation , Quaternion.LookRotation (Vector3.Cross (transform.right ,                                                                                                   hitForward.normal) , hitForward.normal) , Time.deltaTime * 10);  
  •       transform.rotation = Quaternion.LookRotation (Vector3.Cross (transform.right , hitForward.normal) ,hitForward.normal);  

  •         }  
  •       
  •         GetComponent ().AddForce (-transform.up * 10);      //gravity  
  •     }  

你可能感兴趣的:(U3D)