34 lines
1.6 KiB
Markdown
34 lines
1.6 KiB
Markdown
### 本文旨在记录射击游戏开发过程中遇到的问题,并提供解决方案
|
|
##### 面朝一个方向的方法
|
|
1.transform.forward
|
|
2.transform.LookAt
|
|
3.Quaternion.LookRotation
|
|
第一个调整方法transform.forward=dir,修改我们的面朝方向的向量为dir,需要注意的是这里通常传入的是一个向量
|
|
第二个方法transform.LookAt通常用来看向一个点,这就和上面的transform.forward=dir有所不同,第一种方法是向量,而Lookat通常望向一个点.
|
|
第三种方法Quaternion.LookRotation,计算出来一个旋转,将这个旋转赋值给transform.forward就可以实现面向,LookAt内部就是调用了本方法.
|
|
##### Transform方法的坐标系紊乱
|
|
transform.Translate方法用来控制物体的移动,该方法不会考虑物理,只负责移动,注意该方法默认是在本地坐标系下运行的,如果需要在世界坐标系下完成操作,则需要在参数中添加.
|
|
|
|
##### 物体移动的方法
|
|
- transform.Translate()
|
|
- 设置transform.position+=
|
|
- rb.AddForce()
|
|
- 设置rb.velocity
|
|
- rb.MovePosition()
|
|
- CharacterController.Move()
|
|
在不考虑物理的情况下可以使用方法一方法二
|
|
在考虑物理的情况下可以根据情况选择方法三四五
|
|
3D角色可以使用CharacterController
|
|
|
|
##### 物理系统
|
|
Rigidbody控制物体的物理行为[[RigidBody]]
|
|
Collider控制物体的形状[[碰撞器]]
|
|
Material控制物理材质
|
|
如果只有Rigidbody则该物体受到重力等各种物理效果,但是没有物体形状,不会发生碰撞,不会被射线检测到
|
|
如果只有Collider,则可以被碰撞可以作为墙壁,但是没有物理效果
|
|
##### 射线系统
|
|
|
|
|
|
|
|
|