[英]game in Unity3d scaling objects with mouse in c sharp
我正在用C#在unity3d中制作游戏
我希望能够通过使用鼠标左键单击来减小对象,并通过鼠标右键来增大对象。 此代码的问题是:1.除非按比例放大,否则不允许按比例缩小2.如果有多个obj,则一旦单击它们,它们都会受到影响。 我尝试了几种不同的方法来做,但我猜想这与调整布尔值有关。 非常感谢您的帮助
using UnityEngine;
using System.Collections;
public class Scale : MonoBehaviour
{
public GameObject obj;
private float targetScale;
public float maxScale = 10.0f;
public float minScale = 2.0f;
public float shrinkSpeed = 1.0f;
private bool resizing = false;
void OnMouseDown()
{
resizing = true;
}
void Update()
{
if (resizing)
{
if (Input.GetMouseButtonDown(1))
{
targetScale = maxScale;
}
if (Input.GetMouseButtonDown(0))
{
targetScale = minScale;
}
obj.transform.localScale = Vector3.Lerp(obj.transform.localScale, new Vector3(targetScale, targetScale, targetScale), Time.deltaTime*shrinkSpeed);
Debug.Log(obj.transform.localScale);
if (obj.transform.localScale.x == targetScale)
{
resizing = false;
Debug.Log(resizing);
}
}
}
}
使用UnityEngine; 使用System.Collections;
公共课等级:MonoBehaviour {
public float maxScale = 10.0f;
public float minScale = 2.0f;
public float shrinkSpeed = 1.0f;
private float targetScale;
private Vector3 v3Scale;
void Start() {
v3Scale = transform.localScale;
}
void Update()
{
RaycastHit hit;
Ray ray;
if (Input.GetMouseButtonDown (0)) {
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit) && hit.transform == transform) {
targetScale = minScale;
v3Scale = new Vector3(targetScale, targetScale, targetScale);
}
}
if (Input.GetMouseButtonDown (1)) {
ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit) && hit.transform == transform) {
targetScale = maxScale;
v3Scale = new Vector3(targetScale, targetScale, targetScale);
}
}
transform.localScale = Vector3.Lerp(transform.localScale, v3Scale, Time.deltaTime*shrinkSpeed);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.