如何创建在嘲弄和Unity3d“飞行时间相机相机之旅

unity3d飞机游戏之二 发射子弹及子弹销毁代码 - 开源中国社区
当前访客身份:游客 [
当前位置:
发布于 日 13时,
续上次的分享的飞机飞行代码,这次我分享unity3d 飞机发射子弹及子弹销毁代码
游戏DEMO地址 :&
&(19M有点大,请耐心等待)&
Shot.cs(好像拼错英文,shoot才是射击吧,算了)
这个直接拖动到Player上面,其中
&projectilePrefab 是子弹的prefab,你可以自己建立一个子弹的prefab
&shotAudio 是子弹发射的声音,你可以自己拖一个声音
BasicGun.cs 直接拖到你的子弹的prefab里
顺便宣传下我的淘宝店 专卖unity3d插件和教程 & 同时本店现在开启会员9折,购满100减30,购满50减15,购满30减5 的优惠活动哦& &
代码片段(2)
Shot.cs&~&781B&&&&
using UnityE
using System.C
public class Shot : MonoBehaviour
public AudioClip shotA
private AudioSource audioS
public GameObject projectileP
public float fireRate = 0.01f;
private float nextFire = 0.0f;
private bool shooting =
void Start(){
audioSource = GetComponent&AudioSource&();
// Update is called once per frame
void Update ()
if (Input.GetButtonDown ("Fire1"))
shooting =
if (Input.GetButtonUp ("Fire1"))
shooting =
if (shooting && Time.time & nextFire) {
audioSource.PlayOneShot(shotAudio);
GameObject projectile = (GameObject)Instantiate(projectilePrefab,transform.position + transform.forward * -0.8f, Quaternion.identity);
nextFire = Time.time + fireR
BasicGun.cs&~&389B&&&&
using UnityE
using System.C
public class BasicGun : MonoBehaviour
public float damage = 10.0f;
public float speed = 0.5f;
public float DestroyTime = 1.0f;
private Vector3
void Start ()
velocity = -transform.forward *
Destroy (gameObject, DestroyTime);
void FixedUpdate ()
transform.position += velocity * Time.deltaT
开源中国-程序员在线工具:
相关的代码(6)
6回/15853阅
4回/11937阅
10回/9629阅
19回/4962阅
2回/4203阅
4回/3806阅
开源社区,开源or打广告?
2楼:刘汝锋 发表于
3楼:Foou 发表于
这应该是广告吧!
4楼:songo 发表于
开源从代码分享开始
刘汝锋的其它代码Unity3D(4)
如何使用MonoDevelop调试Unity3D脚本
1.确定Unity关联的编辑器是MonoDevelop;
具体操作:“Edit”-&“Preferences”-& 在弹出的“Unity Preferences”对话窗中选择“External Tools”选项,将“ExternalScript Editor”选项选择为“MonoDevelop”如图1- 1所示
2.创建或打开Unity项目中的脚本,会启动MonoDevelop编辑器,如图2- 1所示;
3. 在MonoDevelop中关联Unity程序如图3- 1所示;
并在脚本中加入断点,在行的最左边单击,添加或取消设置断点,如图3- 2所示;
4. 在Unity3D中启动游戏,这时,游戏会正常执行,没有影响,如图4- 1所示;
5. 切换到MonoDevelop中,点击“Run”-& “StartDebugging”,如图5- 1所示;
或直接点击“Play”按钮,但是注意右边选择框内选择的是“Debug”选项,如图5- 2所示。
6. 会发现程序执行停在设置断点的位置,如图6- 1所示;
7. 通过“单步执行”、“进入方法体”或“退出方法体”就可以对程序进行调试了,如图7- 1所示;
8. 在调试结束后,记得取消与Unity3D项目的关联,否则会影响Unity3D的运行效率,如图8- 1所示。
注意:一定要在“Play”状态时才可以取消关联;
但在取消关联后,再次点击仍然会停在设置断点的位置,所以我感觉这个取消关联并没有真正的取消关联。在Unity3D中打开新的程序,仍然会这样,所以只要在Unity3D中运行游戏时,在MonoDevelop中在调试执行后,记得停止调试执行就好了。
在弹出的窗口中点击“Detach”按钮,如图8- 2所示。
9. 参考文档
& 第16课时
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1335次
排名:千里之外 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
unity_3d菜单翻译(最全最简单)
下载积分:1500
内容提示:unity_3d菜单翻译(最全最简单)
文档格式:DOC|
浏览次数:125|
上传日期: 05:29:27|
文档星级:
全文阅读已结束,如果下载本文需要使用
 1500 积分
下载此文档
该用户还上传了这些文档
unity_3d菜单翻译(最全最简单)
官方公共微信查找「unity3d免费版限制」安卓应用 - 豌豆荚Unity3D-FingerGestures控制相机&(2)
FingerGestures 中的 Toolbox&
orbit& 控制摄像机转换
三种模式&&Fix,&&
BardEye,& &AutoZoom
模式 AutoZoom
有三种情况&&AutoZoomFree,&
&AutoZoomFar,&&&
AutoZoomNear
1,首先导入 FingerGestures
2,然后挂载两个文件 CameraFollowManage&
和&& CameraControl
2 , BardEye模式
3 AutoZoom& 的 AutoZoomNear 模式
3 AutoZoom& AutoZoomFar 模式
3 AutoZoom& AutoZoomFree模式
下面是摄像机主控制文件
using UnityE
using System.Collections.G
using UnityEngine.UI;
using UnityEngine.EventS
[Serializable]
public enum CameraType
[HideInInspector]
public enum AutoZoom
&AutoZoomFree,
&AutoZoomFar,
&AutoZoomNear
[HideInInspector]
public enum CamraAngle
[Serializable]
public struct CameraModleType
&public float minD
&public float maxD
&public bool&
&public CameraModleType(float p1, float p2, bool
p3, float p4)
&&& minDistance
&&& maxDistance
clampYawAngle = p3;
height&& = p4;
/// Adaptation of the standard MouseOrbit script to use the finger
drag gesture to rotate the current object using
/// the fingers/mouse around a target object
public class CameraFollowManage : MonoBehaviour
&&& /// The
object to orbit around
&[SerializeField]
&&& public
Transform playerT
&[SerializeField]
&public Transform enemyTarget =
[SerializeField]
&public CameraType m_CurrentCameraType =
CameraType.N
&[SerializeField]
&private AutoZoom m_CurrentFreeType =
AutoZoom.N
[SerializeField]
&private CameraModleType
m_CameraModleFix& = new CameraModleType(10f, 10f,
false, 5f);
&[SerializeField]
&private CameraModleType m_CameraAutoTargetNull =
new CameraModleType(10f, 13f, true, 3f);
&[SerializeField]
&private CameraModleType m_CameraAutoTargetFar =
new CameraModleType(30f, 35f, true, 17);
&[SerializeField]
&private CameraModleType m_CameraAutoTargetNear =
new CameraModleType(15f, 18f, true, 4f);
&[SerializeField]
&private CameraModleType m_CameraModleBard = new
CameraModleType(15f, 15f, false, 12f);
&private CameraModleType m_CurrentCameraV
&#region Charecter Show Position
&// カメラの移動テープを変化ステータス
&[HideInInspector]
&public bool m_CamereTypeChange =
// カメラズーム感度
&[HideInInspector]
&private float cameraAutoZoomSensitivity =
// Free Camera ターゲットとの高度
&[HideInInspector]
&private float freeCameraDistance = 10.0f;
// 俯瞰カメラの時、カメラが映す距離
&[HideInInspector]
&private float autoZoomBardEyeDistance =
// カメラが俯瞰になるMax距離
&[HideInInspector]
&private float autoZoomCameraChangeMaxDistance =
// 直観カメラのデフォルトズームサイズ
&[HideInInspector]
&private float autoZoomCameraDefaultFieldOfView =
&[HideInInspector]
&private float autoZoomCameraMinFieldOfView =
&[HideInInspector]
&private float autoZoomCameraMaxFieldOfView =
&#endregion
&/// Affects horizontal rotation speed (in degrees
&public float yawSensitivity = 45.0f;
private float pinchZoomSensitivity = 5.0f;
&&& /// Initial
camera distance to target
&[HideInInspector]
&&& public float
initialDistance = 10.0f;
&[HideInInspector]
&&& public float
minDistance = 1.0f;
&[HideInInspector]
&&& public float
maxDistance = 30.0f;
&&& /// Affects
horizontal rotation speed (in degrees per cm)
&[HideInInspector]
&&& public bool
clampYawAngle =
&[HideInInspector]
&&& public float
minYaw = -75;
&[HideInInspector]
&&& public float
maxYaw = 75;
&/// Affects vertical rotation speed (in degrees
&[HideInInspector]
&public float pitchSensitivity = 0f;
&[HideInInspector]
&public bool clampPitchAngle =
&[HideInInspector]
&&& public float
minPitch = 0;
&[HideInInspector]
&&& public float
maxPitch = 80;
&/// Use smooth camera motions?
&[HideInInspector]
&public bool smoothMotion =
&[HideInInspector]
&public float smoothZoomSpeed = 5.0f;
&[HideInInspector]
&public float smoothOrbitSpeed = 10.0f;
&private float distance = 10.0f;
&private float yaw = 0;
&private float pitch = 0;
private float idealDistance = 0;
&private float idealYaw = 0;
&private float idealPitch = 0;
private float idealHeight = 0;
&#region interFace
&public float IdealDistance
&&get { return idealD
&&set { idealDistance =
Mathf.Clamp( value, minDistance, maxDistance ); }
&public float IdealYaw
&&get { return idealY }
&&set { idealYaw = clampYawAngle
? ClampAngle( value, minYaw, maxYaw ) : }
&public float IdealPitch
&&get { return idealP
&&set { idealPitch =
clampPitchAngle ? ClampAngle( value, minPitch, maxPitch ) :
static float ClampAngle( float angle, float min, float max
&&if( angle & -360 )
&&&angle +=
&&if( angle & 360 )
&&&angle -=
&&return Mathf.Clamp( angle, min,
&public float IdealHeight
&&get { return idealH
&&set { idealHeight =
&#endregion
&/// Installs the gesture recognizers.
List recogniers = new List( GetComponents() );
DragRecognizer drag&& =
recogniers.Find( r =& r.EventMessageName == "OnDrag" ) as
PinchRecognizer pinch = recogniers.Find( r =& r.EventMessageName
== "OnPinch" ) as PinchR
if( !drag )
&&&&&&&&&&&
drag = gameObject.AddComponent();
&&&&&&&&&&&
drag.RequiredFingerCount = 1;
&&&&&&&&&&&
drag.IsExclusive =
&&&&&&&&&&&
drag.MaxSimultaneousGestures = 1;
&&&&&&&&&&&
drag.SendMessageToSelection =
GestureRecognizer.SelectionType.N
if( !pinch )
&&&&&&&&&&&
pinch = gameObject.AddComponent();
void Start()
&&Install();
Vector3 angles = transform.eulerA
distance = IdealDistance = initialD
yaw = IdealYaw = angles.y;
pitch = IdealPitch = angles.x;
// Make the rigid body not change rotation
if( rigidbody )
&&&&&&&&&&&
rigidbody.freezeRotation =
this.ResetParameter (CameraType.Fix);
void LateUpdate()
&&ApplyControllCamera();
&public void&
ApplyControllCamera()
&&if(m_CurrentCameraType ==
CameraType.AutoZoom)
&&&if(enemyTarget
&&&&Camera.main.fieldOfView
= autoZoomCameraDefaultFieldOfV
&&&&ResetParameter(CameraType.AutoZoom,
AutoZoom.AutoZoomFree);
&&&&Apply(CamraAngle.Back);
if(Vector3.Distance(playerTarget.position, enemyTarget.position)
&= autoZoomCameraChangeMaxDistance)
&&&&ResetParameter(CameraType.AutoZoom,&
AutoZoom.AutoZoomFar);
&&&&Apply(CamraAngle.AutoFar);
&&&&ResetParameter(CameraType.AutoZoom,
AutoZoom.AutoZoomNear);
&&&&Apply(CamraAngle.AutoMid);
Camera size
distance = Vector3.Distance(playerTarget.position,
enemyTarget.position);
&&&&Camera.main.fieldOfView
= Mathf.Clamp(distance * cameraAutoZoomSensitivity,
autoZoomCameraMinFieldOfView, autoZoomCameraMaxFieldOfView);
&&&Apply(CamraAngle.front);
&void Apply(CamraAngle type)
&&if( smoothMotion )
&&&distance =
Mathf.Lerp( distance, IdealDistance, Time.deltaTime *
smoothZoomSpeed );
Mathf.Lerp( yaw, IdealYaw, Time.deltaTime * smoothOrbitSpeed
&&&pitch =
Mathf.LerpAngle( pitch, IdealPitch, Time.deltaTime *
smoothOrbitSpeed );
&&&distance =
&&&pitch =
// autoZoom free
&&if(type ==
CamraAngle.Back)
&&&Quaternion
targetRotation =
Quaternion.Euler(playerTarget.rotation.eulerAngles.x,
playerTarget.rotation.eulerAngles.y - 180f,
playerTarget.rotation.eulerAngles.z);
&&&Vector3
desPos = (playerTarget.position& + (targetRotation
* Vector3.forward) * distance);
&&&moveToSmooth
(desPos.x, this.idealHeight, desPos.z);
transform.LookAt (playerTarget);
&&// autoZoom far
&&else if(type ==
CamraAngle.AutoFar)
&&&Vector3
playPos = playerTarget.
&&&Vector3
targetPos = enemyTarget.
Vector3 MovePos = playPos + Vector3.Normalize(playPos -
targetPos) * freeCameraDistance * 1.4f;
&&&moveToSmooth
(MovePos.x, this.idealHeight, MovePos.z);
this.transform.LookAt(enemyTarget.position - Vector3.up *
autoZoomBardEyeDistance * 1.4f);
&&// autoZoom near
&&else if(type ==
CamraAngle.AutoMid)
&&&Vector3
centerPos = (playerTarget.position + enemyTarget.position)/2;
&&&Quaternion
Rotation = Quaternion.Euler(0f, -90f, 0f) *
playerTarget.&&
&&&Vector3
desPos = centerPos + Rotation * Vector3.forward *
freeCameraDistance * 2.0f;
&&&moveToSmooth
(desPos.x, this.idealHeight, desPos.z);
transform.LookAt (centerPos);
&&&transform.rotation
= Quaternion.Euler( pitch, yaw, 0 );
Vector3 lookAtPos = playerTarget.
&&&Vector3
desiredPos = lookAtPos - distance * transform.
moveToSmooth (desiredPos.x, this.idealHeight,
desiredPos.z);
&/// Resets the yaw pinch dis.
&/// キャレクタとカメラ間のパラメータを変更すると更新します
&/// カメラ移動のテープは変化時処理する
&/// If set to true free camera.
&public void ResetParameter (CameraType
cameraType, AutoZoom autoZoom = AutoZoom.None)
&&if(SetCameraType (cameraType,
autoZoom))
&&&IdealYaw +=
1.0f * yawS
&&&IdealPitch -=
1.0f * pitchS
&&&IdealDistance
-= 1.0f * pinchZoomS
&public bool SetCameraType(CameraType cameraType,
AutoZoom autoZoom = AutoZoom.None)
&&if(cameraType !=
m_CurrentCameraType || m_CurrentFreeType != autoZoom)
&&&m_CurrentCameraType
switch (m_CurrentCameraType)
CameraType.Fix:
&&&&m_CurrentCameraValue
= m_CameraModleF
CameraType.AutoZoom:
&&&&if(m_CurrentFreeType
!= autoZoom)
&&&&&m_CurrentFreeType
&&&&&switch
(m_CurrentFreeType)
AutoZoom.AutoZoomFree:
&&&&&&m_CurrentCameraValue
= m_CameraAutoTargetN
AutoZoom.AutoZoomFar:
&&&&&&m_CurrentCameraValue
= m_CameraAutoTargetF
AutoZoom.AutoZoomNear:
&&&&&&m_CurrentCameraValue
=& m_CameraAutoTargetN
CameraType.BardEye:
&&&&m_CurrentCameraValue
= m_CameraModleB
&&&this.minDistance
= m_CurrentCameraValue.minD
&&&this.maxDistance
= m_CurrentCameraValue.maxD
&&&this.clampYawAngle&
= m_CurrentCameraValue.clampYawA
&&&this.idealHeight
= m_CurrentCameraValue.
&&&this.m_CamereTypeChange
m_CamereTypeC
&/// カメラ移動時だけで使うのパラメータを設定する
&float _refFixX = 0f;
&float _refFixY = 0f;
&float _refFixZ = 0f;
&float _refFreeX = 0f;
&float _refFreeY = 0f;
&float _refFreeZ = 0f;
&float _refXDamping = 0.1f;
&float _refYDamping = 0.2f;
&float _refZDamping = 0.1f;
&private float _RefRotation = 0f;
&private float rotationDamping = 0.3f;
&#endregion
&public void moveToSmooth(float moveTox, float
moveToy, float moveToz)
&&if(m_CamereTypeChange ==
&&&Vector3
currentPosition = this.transform.
&&&// Moving
&&&currentPosition.x
= Mathf.SmoothDamp (currentPosition.x, moveTox, ref _refFixX,
_refXDamping);
&&&currentPosition.y
= Mathf.SmoothDamp (currentPosition.y, moveToy, ref _refFixY,
_refYDamping);
&&&currentPosition.z
= Mathf.SmoothDamp (currentPosition.z, moveToz, ref _refFixZ,
_refZDamping);
this.transform.position = currentP
&&&this.transform.position
= new Vector3(moveTox, moveToy, moveToz);
&////////////////////////////////
Ondrag& Pinch&
事件処理///////////////////////
&#region Gesture Event Messages
&bool isUguiP
&void OnDrag( DragGesture gesture )
& // 如果点击到UI画面 就无响应&
&&#if UNITY_EDITOR
&&isUguiPointer =
EventSystem.current.IsPointerOverGameObject();
&&isUguiPointer =
EventSystem.current.IsPointerOverGameObject(Input.GetTouch(0).fingerId);
&&if(isUguiPointer == true)
if(m_CurrentCameraType != CameraType.AutoZoom)
&&&// wait for
drag cooldown timer to wear off
playerTarget )
&&&&m_CamereTypeChange
&&&&IdealYaw
+= gesture.DeltaMove.x.Centimeters() * yawS
&&&&IdealPitch
-= gesture.DeltaMove.y.Centimeters() * pitchS
&void OnPinch( PinchGesture gesture )
&#endregion
using UnityE
using System.C
using System.Collections.G
public class CameraControl: MonoBehaviour
&private CameraFollowManage tbO
&void Start()
tbOrbit = this.GetComponent ();
&/// Debugs the change target.
&public void DebugChangeTarget()
(tbOrbit.enemyTarget& == null)
&&&tbOrbit.enemyTarget
= GameObject.Find("Bo_Cerberos").
&&&tbOrbit.enemyTarget&
&/// UI画面でカメラのタイプを変わり時に関連処理を進む
&public void ChangeCamara()
(tbOrbit.m_CurrentCameraType)
&&case CameraType.Fix:
&&&tbOrbit.ResetParameter
(CameraType.AutoZoom);
&&case CameraType.AutoZoom:
&&&tbOrbit.ResetParameter
(CameraType.BardEye);
CameraType.BardEye:
&&&tbOrbit.ResetParameter
(CameraType.Fix);
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 3d创建相机快捷键 的文章

 

随机推荐