存档

2014年9月 的存档

iphone配置实用工具iPhone Configuration Utility

2014年9月23日 没有评论

下载地址

http://support.apple.com/kb/DL1466

 

安装完毕后,在设备-》控制台,可以很方便看到报错信息

iphone配置实用工具iPhone Configuration Utility

 

分类: cocos2d 标签:

Problems limiting object rotation with Mathf.Clamp()

2014年9月13日 没有评论

I am working on a game that rotates an object on the z axis. I need to limit the total rotation to 80 degrees. I tried the following code, but it doesn’t work. minAngle = -40.0f and maxAngle = 40.0f

Vector3 pos = transform.position;
pos.z = Mathf.Clamp(pos.z, minAngle, maxAngle);
transform.position = pos;

The code you posted clamps the z position. What you want is to use transform.rotation

void ClampRotation(float minAngle, float maxAngle, float clampAroundAngle = 0)
{
    //clampAroundAngle is the angle you want the clamp to originate from
    //For example a value of 90, with a min=-45 and max=45, will let the angle go 45 degrees away from 90

    //Adjust to make 0 be right side up
    clampAroundAngle += 180;

    //Get the angle of the z axis and rotate it up side down
    float z = transform.rotation.eulerAngles.z - clampAroundAngle;

    z = WrapAngle(z);

    //Move range to [-180, 180]
    z -= 180;

    //Clamp to desired range
    z = Mathf.Clamp(z, minAngle, maxAngle);

    //Move range back to [0, 360]
    z += 180;

    //Set the angle back to the transform and rotate it back to right side up
    transform.rotation = Quaternion.Euler(transform.rotation.eulerAngles.x, transform.rotation.eulerAngles.y, z + clampAroundAngle);
}

//Make sure angle is within 0,360 range
float WrapAngle(float angle)
{
    //If its negative rotate until its positive
    while (angle < 0)
        angle += 360;

    //If its to positive rotate until within range
    return Mathf.Repeat(angle, 360);
}

Here’s a static version of the nice solution by Imapler that, instead of changing the angle itself, it returns the campled angle, so it can be used with any axis.

public static float ClampAngle(
    float currentValue,
    float minAngle,
    float maxAngle,
    float clampAroundAngle = 0
) {
    return Mathf.Clamp(
        WrapAngle(currentValue - (clampAroundAngle + 180)) - 180,
        minAngle,
        maxAngle
    ) + 360 + clampAroundAngle;
}

public static float WrapAngle(float angle)
{
    while (angle < 0) {
        angle += 360;
    }
    return Mathf.Repeat(angle, 360);
}

Or if you don’t expect to use the WrapAngle method, here’s an all-in-one version:

public static float ClampAngle(
    float currentValue,
    float minAngle,
    float maxAngle,
    float clampAroundAngle = 0
) {
    float angle = currentValue - (clampAroundAngle + 180);

    while (angle < 0) {
        angle += 360;
    }

    angle = Mathf.Repeat(angle, 360);

    return Mathf.Clamp(
        angle - 180,
        minAngle,
        maxAngle
    ) + 360 + clampAroundAngle;
}

So now you can do:

transform.localEulerAngles.x = YourMathf.ClampAngle(
    transform.localEulerAngles.x,
    minX,
    maxX
);
分类: cocos2d, stackoverflow精选 标签:

cocos2d-js研究:cocos工具生成的项目移植到cocos code ide 中

2014年9月10日 没有评论

很多朋友不知道如何移植cocos2d-js中提供的例子如何移植到cocos code ide(以下简称cc ide)中,比如js-moonwarriors

下面就把移植的步骤分享给初入cocos2d-js的朋友

1、在cc ide中新建一个cocos js项目,叫mymoonwarriors吧;

2、拷贝…/cocos2d-js-v3.0-rc3/samples/js-moonwarriors中res、src目录、project.json、main.js都拷贝覆盖到mymoonwarriors项目目录中;

3、修改project.json中的enginedir值从“../../frameworks/cocos2d-html5”改为 “frameworks/cocos2d-html5”;

4、点击cc ide中的地球图标运行,看小成果吧;

5、js-test例子的移植也一样。

分类: 未分类 标签:

SendMessageUpwards定义简单按钮(Unity3D开发之十)

2014年9月9日 没有评论

猴子原创,欢迎转载。转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢!

原文地址: http://www.cocos2dev.com/?p=582

SendMessageUpwards是朝物体和上级父物体发送信息。也可以用来制作按钮。

下面就是一个简单的GUI交互模式。

一、GUI的接口事件处理类
GUIInterface.cs

using UnityEngine;
using System.Collections;

public class GUIInterface : MonoBehaviour {

	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
	
	}

	void onTouchStartGame()
	{
		Debug.Log("onTouchStartGame->");
	}
}

按钮被点击之后调用的handler方法。
MenuItem.cs

using UnityEngine;
using System.Collections;

// A simple menu item. This simply specifies the handler function to call when the item is clicked/tapped

[RequireComponent(typeof(Collider2D))]
public class MenuItem : MonoBehaviour 
{
	public string handler;		// the name of the handler function to be called when this item is tapped
	public string sfxName;		// the name of a sound clip to play when this item is tapped
}

1、在你的新场景中,创建一个Object对象命名为GUI;
2、创建一个3D Text对象,命名为Start Game;
3、将2步中的Start Game对象拖入1步中的GUI,作为其子对象;
4、将2步中的Start Game添加脚本MenuItem.cs, 添加Box Collider 2D碰撞盒,并勾中Is Trigger。
5、将1步中的GUI对象的Layer修改为GUI

二、输入管理器
InputManager.cs

using UnityEngine;
using System.Collections;

public class InputManager : MonoBehaviour {
	public LayerMask GUILayerMask;	
	public static InputManager Instance;	

	void Awake () 
	{
		// check there isn't more than one instance of the InputManager in the scene
		if(Instance != null)
		{
			Debug.LogError("More than one InputManager found in the scene");
			return;
		}
		
		// set the global instance
		Instance = this;
	}

	// Use this for initialization
	void Start () {
	
	}
	
	private void UpdateInput()
	{
		bool tapped = false;
		Vector3 tapPos = Vector3.zero;
		
		// check for mouse input
		if(Input.GetMouseButtonDown(0))
		{
			tapped = true;
			tapPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
		}
		
		// check for touch input
		foreach (Touch touch in Input.touches) 
		{
			if (touch.phase == TouchPhase.Began)
			{
				tapped = true;
				tapPos = Camera.main.ScreenToWorldPoint(touch.position);
			}
		}
		
		// respond to any mouse-down or touch events
		if(tapped)
		{
			// check if there's any gui elements at the tap position
			RaycastHit2D hit = Physics2D.Raycast(tapPos, Vector2.zero, 1.0f, GUILayerMask);
			if (hit.collider != null)
			{
				MenuItem menuItem = hit.collider.gameObject.GetComponent<MenuItem>();
				if(menuItem != null)
				{
                                        if(menuItem.sfxName != "")
					{
                                              // PlaySfx(menuItem.sfxName)
					}
					menuItem.SendMessageUpwards(menuItem.handler);
				}
			}
		}
	}
	
	void Update () 
	{
		UpdateInput();
	}
}

1、创建Object,命名InputManager,添加脚本InputManager.cs
2、修改属性InputManager GUILayer Mask属性为GUI。

ok。现在完成了。

SendMessageUpwards定义简单按钮(Unity3D开发之十)

思路:
1、InputManager负责获取手指点击和GUI层对象的碰撞,并检测碰撞体是否含有MenuItem脚本,如果有,则发送MenuItem的handler函数消息。
2、GUIInterface则注册并接受所有GUI层的Item的消息。统一处理交互事件。

分类: 未分类 标签:

Sprite添加阴影摇摆动画(Unity3D开发之九)

2014年9月9日 没有评论

猴子原创,欢迎转载。转载请注明: 转载自Cocos2D开发网–Cocos2Dev.com,谢谢!

原文地址: http://www.cocos2dev.com/?p=575

Sprite添加阴影摇摆动画(Unity3D开发之九)

今天看到一个很简单的摇摆动画,感觉不错的。记录下,以后需要的可以用下,主要是计算position的方式。

DropShadowAnim.cs

using UnityEngine;
using System.Collections;

public class DropShadowAnim : MonoBehaviour 
{
	public float radius	= 0.15f;		// 阴影距离parent的半径
	public float maxAngle = 45.0f;		// 阴影左右摇摆的最大角度
	public float period = 2.0f;			// 一次摇摆需要多少秒
	
	private Transform trans;

	void Start()
	{
		trans = this.transform;
	}

	void Update () 
	{
		float phase = Time.realtimeSinceStartup * (2.0f * Mathf.PI) / period;
		float angle = Mathf.Sin(phase) * (Mathf.Deg2Rad * maxAngle);

		float startX = 0.0f;
		float startY = -radius;
		float sinAngle = Mathf.Sin(angle);
		float cosAngle = Mathf.Cos(angle);
		float x = cosAngle * startX - sinAngle * startY;
		float y = sinAngle * startX + cosAngle * startY;

		trans.localPosition = new Vector3(x, y, 0.0f);
	}
}

用起来就非常简单了。

Sprite添加阴影摇摆动画(Unity3D开发之九)

1、创建一个Sprite作为parent;
2、复制刚创建的Sprite。拖到1步中,作为其子对象。
3、将2步中的sprite的Sprite Renderer的Color修改为黑色来作为阴影。
4、给2步中的Sprite添加动画脚本。

ok。这样就搞定了。

分类: 未分类 标签:

iOS app validation error: Missing plist key CFBundleShortVersionString

2014年9月8日 没有评论

I built an iOS game with SpriteBuilder and cocos2d. When I attempt to submit it to the AppStore, I get the following error:

ERROR ITMS-9000: “Missing plist key. The Info.plist file is missing the required key: CFBundleShortVersionString.”

How do I fix this? Thanks!

This is an easy fix. You just need to add the CFBundleShortVersionString key to your Info.plist file.

Click your Info.plist file in your project. Right click and select “Add Row”. Then paste in the string “CFBundleShortVersionString”. It will automatically change it to read: “Bundle versions string, short”.

Then choose a value like 1.0 or whatever you want your version to be.

iOS app validation error: Missing plist key CFBundleShortVersionString

分类: stackoverflow精选, unity3d 标签:

在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

2014年9月4日 没有评论

cocos2d-x 是目前比较流行的游戏引擎,为大多游戏开发爱好者所喜爱,

因此,本文的目的在于教导新手如何在win7下建立cocos2dx开发环境,

截止本文,cocos2dx的最新版本为 v3.2rc0版,我将假设您的开发

环境中已包含VS2012/VS2013集成工具(该IDE下载安装比较简单,

没有安装的朋友可以到微软官方下载安装),有了该工具,接下便

开始我们的游戏环境搭建之旅吧…

首先,建立该开发环境需要以下工具:

1.Visual Studio 2012/2013(微软IDE开发工具)

2.Cocos2d-x v3.2rc0版(游戏开发引擎)

3.JAVA JDK(JAVA开发工具包)

4.python工具(用于脚本编译)

5.ADT包(含Android SDK组件和一个内置ADT(Android开发者工具)的Eclipse IDE版本)

6.Android NDK(so和java应用一起打包成apk)

一.首先到中文官网下载cocos2d-x v3.2rc0版本,

传送门http://cocos2d-x.org/download

在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

下载完毕后,我们直接解压,即可得到主要目录(本文相关软件我全部解压至G:/),

然后进入到G:/cocos2d-x-3.2rc0/build,用VS2012打开cocos2d-win32.vc2012.sln,

如图:

在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

这里需要注意的是,默认平台工具集为v110_xp,如果我们用的是win7平台,请将其改为Visual Studio 2012(v110),

在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

之后,我们将启动项改为CppTest,然后生成解决方案…

在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

编译成功后,我们按下F5, 便可以成功启动,然后看到如下画面:

在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)


二.安装配置JAVA JDK

因为我们希望能移植到Android平台,所以JAVA JDK是必须的,这里推荐使用64 bit JDK for windows 64bit。

传送门:http://www.oracle.com/technetwork/java/javase/downloads/index.html

在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

下载完毕后,对其进行安装,本机路径为:G:/Java/jdk1.8.0_05

配置用户环境变量:

1.新建用户变量:

变量名:JAVA_HOME         变量值:G:/Java/jdk1.8.0_05
变量名:CLASSPATH          变量值:.;%JAVA_HOME%/lib;(注意点号)


配置系统环境变量:

2.在系统变量后继续添加:
 系统变量名:Path            变量值:;%JAVA_HOME%/bin

到此,环境变量配置完毕。

然后在Dos窗口下输入java -version

(开始->运行->cmd 或 win+R)

若看到如下画面,则表明安装成功:

在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

三.下载ADT包,配置Android SDK环境

ADT包中包含名为Eclipse的IDE开发工具,同时也包含了Android SDK,内置的ADT开发工具其作用为使得

Eclipse能够使用Android SDK组件(相当于一座桥梁),

传送门:http://developer.android.com/sdk/index.html

(可能被墙,本人用了代理服务器顺利进去)

在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

配置用户环境变量:

变量名:ANDROID_SDK         变量值:G:/adt-bundle-windows-x86_64-20140624/sdk/platforms;G:/adt-bundle-windows-x86_64-20140624/sdk/tools;G:/adt-bundle-windows-x86_64-20140624/sdk/platform-tools;

变量名:path                            变量值:%ANDROID_SDK%( 如存在继续添加,记得用分号隔开)

然后在CMD下的DOS窗口中输入adb -h检验是否安装成功。

在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

四.下载并安装python工具

这里的版本为python2.73,

传送门:https://www.python.org/download/releases/2.7.3/

1.下载并安装python2.73。

在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

本机的路径为G:/Python27,

配置用户环境变量:

变量名path                        变量值:G:/Python27(在后面继续添加,记得用分号隔开)

在CMD下的DOS窗口中输入python,如如下图所示便表明安装成功:

在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

五.配置安装Android NDK

先下载并安装Android NDK,推荐使用Windows 64-bit, 本机路径为:G:/android-ndk-r9d,

传送门:http://developer.android.com/tools/sdk/ndk/index.html

在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

配置用户环境变量:

变量名:NDK_ROOT     变量值:G:/android-ndk-r9d

变量名:path                  变量值:%NDK_ROOT% (从已有后面添加,记得用分号隔开)


六.创建生成Cocos2dx工程项目。

在CMD下的DOS窗口中进入G:/cocos2d-x-3.2rc0/tools/cocos2d-console/bin目录中,

然后输入

python cocos.py new beyondTest -p com.cocos2dx.org -l cpp -d beyond 

用cocos.py脚本创建项目工程,如图所示:

在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

参数说明:

  • test为项目名称
  • -p后面接包名
  • -l后面接开发语言类型,有cpp, lua, js三种类型
  • -d后面接项目存放的目录

然后进入到G:/cocos2d-x-3.2rc0/tools/cocos2d-console/bin/beyond/beyondTest/proj.android目录中,

在DOS下输入python build_native.py对build_native.py脚本进行编译,

在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

七.对Cocos2dx项目用真机进行测试运行。

1.打开Eclipse,设置Android NDK的路径(选择Windows->Preferences->NDK)

(注意:第一次启动Eclipse,会同时出现一个即时对话框,要求设置默认工作区(workspace)。

你可以选择默认设置,也可以按自己的需求设置(我将其设置为G:/Java/workspace))


在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

2.在Project Explorer空白处点击鼠标右键,选择Import…

3.选择Exiting Android Code Into WorkSpace,点击Next。

在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

4.浏览目录为G:/cocos2d-x-3.2rc0/tools/cocos2d-console/bin/beyond/beyondTest/proj.android,

然后点击Finish。

在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

5.刚导入时发现有错误,原因是缺少java的org.cocos2dx.lib,如图:

(Windows->Show View->Problems可显示该界面)

在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

6.我们将G:/cocos2d-x-3.2rc0/cocos/platform/android/java/src目录下的org文件覆盖到

G:/cocos2d-x-3.2rc0/tools/cocos2d-console/bin/beyond/beyondTest/proj.android/src目录下,

然后重新导入beyondTest工程,然后我们可以看到错误消失了:

在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

真机测试
1.用USB连接上带ANDROID系统的手机,然后鼠标右击该工程,或者选择菜单中的Run,
之后点击Run As->Android Application,进入如下界面(可以看到我的ANDROID版本仍为2.3.4,
但不影响结果^0^),选择后点击Ok,便可以成功在真机上运行了。
在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

最后来张运行成功后的截图:

在win7下搭建cocos2d-x v3.2rc0开发环境(For Android)

转自:http://blog.csdn.net/beyond_ray/article/details/37995287

分类: 未分类 标签: