Unity制作一个小星球
2022/4/23 23:15:15
本文主要是介绍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; } }
设置移动速度
这样就模拟出在星球表面行走
这篇关于Unity制作一个小星球的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南