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制作一个小星球的更多相关文章
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:制作一个小按钮
		
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
 - 利用yacc和lex制作一个小的计算器
		
买了本<自制编程语言>,这本书有点难,目前只是看前两章,估计后面的章节,最近一段时间是不会看了,真的是好难啊!! 由于本人是身处弱校,学校的课程没有编译原理这一门课,所以就想看这两章,了解 ...
 - Pygame:编写一个小游戏                                                                                                         标签:               pythonpygame游戏                                            2017-06-20 15:06             103人阅读              评论(0)
		
大学最后的考试终于结束了,迎来了暑假和大四的漫长的"自由"假期.当然要自己好好"玩玩"了. 我最近在学习Python,本意是在机器学习深度学习上使用Python ...
 - 【flash】关于flash的制作透明gif的一个小技巧
		
关于flash的制作透明gif的一个小技巧 或者说是一个需要注意的地方 1.导出影片|gif,得到的肯定是不透明的.2.想要透明背景,必须通过发布.3.flash中想要发布gif动画的话,不能有文字, ...
 - 模仿京东顶部搜索条效果制作的一个小demo
		
最近模仿京东顶部搜索条效果制作的一个小demo,特贴到这里,今后如果有用到可以参考一下,代码如下 #define kScreenWidth [UIScreen mainScreen].bounds.s ...
 - 【Unity技巧】制作一个简单的NPC
		
1. 写在前面 前几天看了cgcookie的一个教程,学习了下怎么根据已有人物模型制作一个仿版的NPC人物,感觉挺好玩的,整理一下放到博客里! 先看一下教程里面的最终效果. 是不是很像个幽灵~ 下面是 ...
 - Unity 游戏开发技巧集锦之制作一个望远镜与查看器摄像机
		
Unity 游戏开发技巧集锦之制作一个望远镜与查看器摄像机 Unity中制作一个望远镜 本节制作的望远镜,在鼠标左键按下时,看到的视图会变大:当不再按下的时候,会慢慢缩小成原来的视图.游戏中时常出现的 ...
 - 吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:制作一个超小按钮
		
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
 - 用 Python 制作一个艺术签名小工具,给自己设计一个优雅的签名
		
生活中有很多场景都需要我们签字(签名),如果是一些不重要的场景,我们的签名好坏基本无所谓了,但如果是一些比较重要的场景,如果我们的签名比较差的话,就有可能给别人留下不太好的印象了,俗话说字如其人嘛,本 ...
 
随机推荐
- 半吊子菜鸟学Web开发6 -- Vscode开发环境配置
			
1vscode上手一周不到,终于弄出点门路,终于弄清楚了点vscode的设置是什么样子的了....哭 2就我这两天的使用来看,一般vscode默认只让打开一个文件夹,然后在你打开的文件夹里面自动生成 ...
 - 怎么得到InnoDB主键索引B+树的高度?
			
上面我们通过推断得出B+树的高度通常是1-3,下面我们从另外一个侧面证明这个结论.在InnoDB的表空间文件中,约定page number为3的代表主键索引的根页,而在根页偏移量为64的地方存放了该B ...
 - session监听器和Attribute监听器
			
session监听器 有一个web项目,每次一个新的浏览器链接,都会走下面SessionListerenr 方法,该技术可用于网站当前用户的统计 package com.cisst.controlle ...
 - 为什么使用 Executor 框架比使用应用创建和管理线程好?
			
为什么要使用 Executor 线程池框架 1.每次执行任务创建线程 new Thread()比较消耗性能,创建一个线程是比较耗 时.耗资源的. 2.调用 new Thread()创建的线程缺乏管理, ...
 - GC 是什么?为什么要有 GC?
			
GC 是垃圾收集的意思,内存处理是编程人员容易出现问题的地方,忘记或者错误 的内存回收会导致程序或系统的不稳定甚至崩溃,Java 提供的 GC 功能可以自动 监测对象是否超过作用域从而达到自动回收内存 ...
 - Less使用@import进行Mixins
			
Import 指令 从其他样式表导入样式 在标准CSS中,@ import at-rules必须在所有其他类型的规则之前.但Less.js并不关心你放置@import语句的位置 Example: .f ...
 - 什么是 spring?
			
Spring 是个 java 企业级应用的开源开发框架.Spring 主要用来开发 Java 应用, 但是有些扩展是针对构建 J2EE 平台的 web 应用.Spring 框架目标是简化 Java 企 ...
 - Zookeeper 的典型应用场景 ?
			
Zookeeper 是一个典型的发布/订阅模式的分布式数据管理与协调框架,开发人员 可以使用它来进行分布式数据的发布和订阅. 通过对 Zookeeper 中丰富的数据节点进行交叉使用,配合 Watch ...
 - okayNav jQuery 插件怎么使用
			
首先到 https://github.com/VPenkov/okayNav 这个网站里面把代码下载下来 下载之后解压出来,解压后打开文件app 然后创建一个HTML文档 然后倒入css的样式 样式: ...
 - shell脚本编程(一) 变量、条件判断、循环
			
目录 1. shell脚本编程 2. 运行 Shell 脚本有两种方法 3. 变量 4. 本地变量 5. 环境变量 6. 参数变量 7. 多行注释 8. if条件判断 ...