Unity制作一个小星球

博客 分享
0 247
优雅殿下
优雅殿下 2022-04-23 21:58:19
悬赏:0 积分 收藏

Unity制作一个小星球

制作过程

在场景中新建一个球体(Planet)和一个胶囊(Player),适当缩放并添加材质,这里胶囊会被视为玩家

然后将摄像机设为胶囊(Player)的子物体

自行调整合适的摄像机视角
新建脚本GravityArrtacter,添加到Planet上

public class GravityAttracter : MonoBehaviour{    public float gravity = -10;	//重力大小    public void Attract(GameObject obj)	//吸引物体的方法,传入需要吸引的物体    {        Transform body = obj.GetComponent<Transform>();        Vector3 gravityUp = (body.position - transform.position).normalized;	//星球到玩家的向量        Vector3 bodyUp = body.up;	//被吸引物体的正上方向        body.GetComponent<Rigidbody>().AddForce(gravityUp * gravity);//吸引物体,重力大小为负数,方向变为物体到星球方向        //让一个轴从参数一的方向旋转到参数二(世界空间)的方向,这里是让物体上方旋转到重力方向,        //但是一个轴无法决定物体的旋转状态,* body.rotation得到物体需要旋转的目标方向        Quaternion targetRotation = Quaternion.FromToRotation(bodyUp, gravityUp) * body.rotation;        //进行插值,旋转        body.rotation = Quaternion.Slerp(body.rotation, targetRotation, 50 * Time.deltaTime);    }}

自己设置重力大小,这里负数表示重力方向

新建脚本Body,添加到Player上

public class Body : MonoBehaviour{    public FauxGravityAttracter attracter;	//声明星球重力    private Rigidbody myRigidbody;        void Start()    {        myRigidbody = gameObject.GetComponent<Rigidbody>();	//获取物体刚体        myRigidbody.constraints = RigidbodyConstraints.FreezeRotation;//取消刚体碰撞旋转影响        myRigidbody.useGravity = false;		//取消世界空间重力影响    }    void Update()    {	        attracter.Attract(gameObject);//传入参数,该物体被吸引    }}

设置对应参数

新建PlayerController,添加到Player上

public class PlayerController : MonoBehaviour{    public float moveSpeed = 15f;    private Vector3 moveDir;    private Rigidbody myRigidbody;    void Start()    {        myRigidbody = gameObject.GetComponent<Rigidbody>();    }    private void FixedUpdate()    {        myRigidbody.MovePosition(myRigidbody.position + transform.TransformDirection(moveDir) * moveSpeed * Time.deltaTime);    }    void Update()    {        moveDir = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")).normalized;    }}

设置移动速度

这样就模拟出在星球表面行走

posted @ 2022-04-23 21:51 AlphaIcarus 阅读(0) 评论(0) 编辑 收藏 举报
回帖
    优雅殿下

    优雅殿下 (王者 段位)

    2018 积分 (2)粉丝 (47)源码

    小小码农,大大世界

     

    温馨提示

    亦奇源码

    最新会员